はじめに
VSCodeのC#拡張(ms-dotnettools.csharp)が、2.0.320から補完等の動作が変わっているので、従来動作(1.26.0以前)と近い形に戻す方法を書く
設定
vscodeのsettings.jsonに"dotnet.server.useOmnisharp"という設定項目が追加されているので、これをtrueにする。
"dotnet.server.useOmnisharp": true
設定後、vscodeを再起動すれば、設定が反映される。
注意点
これは C# DevKitの挙動と競合するものなので、該当モジュールを入れている場合はtrueにしないこと。
C# DevKitかomnisharpのどちらかを選択する必要がある。
設定しなかった場合
これを設定せず、かつC# DevKitを入れてない場合、筆者の場合は"dotnet buildした場合は正常にビルドできるプロジェクトが、ソースジェネレーターが生成したクラスが補完で出なくなり、コンパイルエラーとして表示されるようになった"という症状が出た。
他にもあるかもしれないが、今の所確認できたのはこれ。
終わりに
拡張提供元としては、C# DevKitと挙動が競合するものをどう扱うかという所で出てきた苦肉の策かもしれないが、自分は戸惑ったのであんまりやらないで欲しいなというのが正直な所。
omnisharp自体は他エディタでも使われていることもあるし、そうそう無くなる事は無いとは思う。
vscodeの拡張の方はその内"legacy"とか言って切り捨てる可能性も無くはないけど。