TL;DR;
UPMでVisualStudioCodeEditorの代わりにこちらを使ってください。
git@github.com:wallstudio/com.unity.ide.vscode.git
最新のバージョンでは修正されています。
原因っぽいもの
CsProjファイルのReferenceOutputAssembly
の項目がfalseになっているからの様で、これを手動でtrueにすると治る。
ただ、これは自動生成ファイルなので、手直しでOKとはいきません。
もう治ってるみたいなことがかいてあったのですが…
とりあえず、当時の対処療法を試みるも、UPMのCode拡張を入れていると、AssetPostprocessor.OnGeneratedCSProject
が呼ばれなくなってしまうらしいです。
public class FIX : AssetPostprocessor
{
private static string OnGeneratedCSProject(string path, string content)
=> content.Replace(
"<ReferenceOutputAssembly>false</ReferenceOutputAssembly>",
"<ReferenceOutputAssembly>true</ReferenceOutputAssembly>");
}
}
対処
com.unity.ide.vscode
を直接書き換えちゃうのが手っ取り早いということで、こちらです
追記
OmniSharpの方にIssueが上がっていました
ReferenceOutputAssemblyという名前的に本来trueであるべきのような気もするのですが(com.unity.ide.vscide側が悪い)どうなのでしょうか。
今まではfalseで動いていましたが。
Unityがプロジェクトメタファイルの出力クラスを切り替えている部分が分かりました。
AssetPostprocessor.cs#L159
どうやら、これからはOnGeneratedCSProject
ではなく、IExternalCodeEditor
を使って出力機構丸ごと差し替える形でフックするのがよさそうです。
また、力業ではありますが、ReadDirectoryChangesW
(Win32API)などで、ファイルの書き換えをフックするという手段もあるにはあります。