VS2017用的比較老的版本,因為當時下載了離線文件,所以可以離線安裝,現在看來是沒有必要的,占硬盤空間不說,不更新VS IDE,Unity高版本還有問題。
主要問題在於,我之前一直用Unity2017和VS 2017,無問題。
昨天想體驗Unity PC環境下的IL2CPP,得知要Unity2018及以上版本才有這個功能,於是裝了Unity2018.3.13f1,能成功編輯CS腳本,也能正確生成VS工程,但是IDE中腳本提示許多紅線,顯示一堆package找不到。

搜索得知需要更新VS IDE,我用的幾乎是比較早的VS2017,15.5.X還是多少的,升級到目前最新15.9.11。
但是這又帶來了新的問題,腳本打開后,VS工程無法正確加載了,試了一下,就算建立其他工程,比如一般的VS工程,C#工程,C++工程也不行。提示
error : Invalid static method invocation syntax: "[Microsoft.Build.Utilities.ToolLocationHelper]::GetPathToStandardLibraries($(TargetFrameworkIdentifier)
連創建基本的一般工程都完蛋了,google了一會,有的說要重裝VS的,但是有人說沒用,根本解決不了問題,最后解決辦法要自己手動命令行修復一下才行。
在下面10 Best Solution里提到了解決方法,有趣的這是2018年8月份給的解決辦法,2019年4月我更新VS IDE還是有這個問題,微軟的人果然都是樂於給人喂屎的。
不確定未來這個辦法是否還會有效,以及是否會修復,總之目前對我來說可行了。
命令行輸入下面的內容
gacutil /u "MSBuild, Version=15.1.0.0" gacutil /u "Microsoft.Build.Conversion.Core, Version=15.1.0.0" gacutil /u "Microsoft.Build, Version=15.1.0.0" gacutil /u "Microsoft.Build.Engine, Version=15.1.0.0" gacutil /u "Microsoft.Build.Tasks.Core, Version=15.1.0.0" gacutil /u "Microsoft.Build.Utilities.Core, Version=15.1.0.0" gacutil /u "Microsoft.Build.Framework, Version=15.1.0.0"
經測試,一般C#,C++工程均又能正確創建並運行了。
Unity2018腳本工程,需要選擇Open C# Project,才能正確生成工程。

謝天謝地總算全解決了,2個小時就這么白白浪費在這種毫無意義的Bug上了,微軟丟雷老母!!!
最后一個有用的東西是,如何安裝一個早期版本的VS2017,沒試過,但是姑且先存貨以備不時之需。
https://docs.microsoft.com/en-us/visualstudio/productinfo/installing-an-earlier-release-of-vs2017
