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