为什么Microsoft.Build.Framework.dll 15.3不加载csproj,15.1呢?
我已经在这个问题上燃烧了几个小时,并且做了大量的搜索来弄清楚发生了什么事情。为什么Microsoft.Build.Framework.dll 15.3不加载csproj,15.1呢?
我有一个从.csproj文件加载项目文件的应用程序,因此它引用了Microsoft.Build dll。在我的一台电脑上,一切正常。另一方面,当我尝试加载.csproj文件时,应用程序崩溃。
我得到的例外是Microsoft.Build.Exceptions.InvalidProjectFileException
类型的以下消息:
的工具版本“15.0”是无法识别的。可用的工具版本是“14.0”,“2.0”,“3.5”,“4.0”。
起初我不确定是什么导致了这个问题,所以我想我会将.dlls作为我的项目的一部分。也就是说,我将.dlls复制到我的项目中的一个文件夹中,并引用了这些.dll文件。但是,当我跑我的项目GAC载入偏好正在咬我,作为输出窗口显示我不同的.dll文件被加载:
加载“C:\ WINDOWS \ Microsoft.Net \装配\ GAC_MSIL \ Microsoft.Build.Framework \ v4.0_15.1.0.0__b03f5f7f11d50a3a \ Microsoft.Build.Framework.dll”。
因此,我通过导航到该位置并查看.dll上的属性,查看了每台计算机上加载的.dll文件。
在运行的计算机上,.dll的版本为15.1.1015。 在没有工作的机器上.dll的版本为15.3.409
我还没有发现有人在讨论这个确切的问题,但是我已经看到人们在升级到Visual Studio 15.3后讨论了问题。果然,无法工作的计算机具有Visual Studio 15.3.5,而工作的计算机具有Visual Studio 15.2。
为了尝试解决这个问题,我删除了使用步骤,从GAC 15.3这里概述:
Could not load type 'Microsoft.Build.Framework.SdkReference' on project open in VS 2017 U1 (15.3)
唉,即使这种变化之后,我仍然遇到了同样的问题,所以改变了GAC来指向更早的Microsoft.Build.Framework.dll仍然没有修复它(也许是因为Microsoft.Build系列中的其他文件正在以15.3的GAC格式运行)。我确实证实了由GAC加载的版本现在是15.1。
是否有另一种解决方法或修复方法可以应用于解决此问题?
我希望别人可以用比这更好的东西来回答,但是我可以在加载项目时强制版本14.0来解决问题。我的项目不需要Visual Studio 2017(MSBuild 15.X)。由于它可以在Visual Studio 2015中加载,所以我只需在Project构造函数中指定版本号:
coreVisualStudioProject = new Project(fileName, null, "14.0", new ProjectCollection());
的开发人员命令提示符中也可以在msbuild中正常生成,这要感谢您在此分享您的解决方案,您可以将其标记为答案,这样可以帮助其他社区成员获得相同的问题。 –
您是否尝试使用msbuild命令行进行构建?你应该通过这一步,否则问题可能在msbuild。尝试'msbuild ' –
我不知道为什么msbuild .exe会是问题,因为我还没有执行构建 - 只是试图加载.csproj。也就是说,该项目在Visual Studio中正确加载,并且在VS 2017 –