前回 VS Code で Unity の C# コードを開いても全然機能が使えませんでした
これを何とかしたい!
スポンサードリンク
というわけで探したところ VS Code 用のプラグインがありました
ダウンロードしてインポートします

ぽこっと VSCode というフォルダが追加され、中身には Plugins/Editor/VSCode.cs が入っています・・・これで Unity Editor の機能が拡張されるっぽい

なんか標準のフォルダ構成とかルールがなくてプロジェクト直下に放り込まれるのが気に入らないのですが、とりあえず Unity Editor のメニューから [Edit]-[Preferences]-[External Tools] を開くと

コマンドオプションとかいろいろ上書かれてました
「VSCode」なる項目が追加されてます

さらにメニューに [Assets]-[Open C# Project In Code] が増えているので実行
コマンドプロンプトも同時に立ち上がりますが、これはログ出力用みたいです
cs ファイルを開いてしばらくすると・・・

まだだめ・・・警告ログを見ると DNX がないとか、v2.0 の System.Core.dll がないとかボロボロ
とりあえず下記を参考に DNX ライブラリとやらをインストールします
Get started with ASP.NET Core | Microsoft Docs Get started with ASP.NET Core | Microsoft Docs
Windows の場合はまずコマンドプロンプト(管理者)でコマンド実行
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "&{$Branch='dev';iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1'))}"
環境変数 PATH の設定を有効化するため一回コマンドプロントを閉じ、もう一回コマンドプロンプト(管理者)を開きなおしてコマンド実行
dnvm upgrade -r coreclr
これで DNX 環境は入ったはず
・・・次に Unity プロジェクトのターゲットフレームワークを v2.0 から v4.0 に変更したいのですが、どうも一度 .csproj ファイルの設定を変更しても VSCode Plugin がご丁寧に v2.0 に戻して上書きするという余計なことをしてくれるようです;
VSCode.cs の該当の箇所はここ
~ 中略 ~
/// <summary>
/// Remove extra/erroneous data from project file (content).
/// </summary>
static string ScrubProjectContent(string content)
{
if (content.Length == 0)
return "";
// Make sure our reference framework is 2.0, still the base for Unity
if (content.IndexOf("<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>") != -1)
{
content = Regex.Replace(content, "<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>", "<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>");
}
~ 中略 ~
ここを v2.0 から v4.0 に変更して保存・・・再度メニューから [Assets]-[Open C# Project In Code] 実行

やったー!インテリセンスが効いた!・・・でも設定だるすぎ