Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么Microsoft.Build.Framework.dll 15.3不加载csproj,而15.1加载?_C#_Msbuild_Visual Studio 2017_Gac_Csproj - Fatal编程技术网

C# 为什么Microsoft.Build.Framework.dll 15.3不加载csproj,而15.1加载?

C# 为什么Microsoft.Build.Framework.dll 15.3不加载csproj,而15.1加载?,c#,msbuild,visual-studio-2017,gac,csproj,C#,Msbuild,Visual Studio 2017,Gac,Csproj,我在这个问题上花了几个小时,做了大量的搜索来找出到底发生了什么 我有一个从.csproj文件加载项目文件的应用程序,所以它引用了Microsoft.Build DLL。在我的一台电脑上,一切正常。另一方面,当我尝试加载.csproj文件时,应用程序崩溃 我收到的异常类型为Microsoft.Build.Exceptions.InvalidProjectFileException,并显示以下消息: 无法识别工具版本“15.0”。可用的工具版本有“14.0”、“2.0”、“3.5”、“4.0” 起初

我在这个问题上花了几个小时,做了大量的搜索来找出到底发生了什么

我有一个从.csproj文件加载项目文件的应用程序,所以它引用了Microsoft.Build DLL。在我的一台电脑上,一切正常。另一方面,当我尝试加载.csproj文件时,应用程序崩溃

我收到的异常类型为Microsoft.Build.Exceptions.InvalidProjectFileException,并显示以下消息:

无法识别工具版本“15.0”。可用的工具版本有“14.0”、“2.0”、“3.5”、“4.0”

起初我不确定是什么导致了这个问题,所以我想我应该把.dll作为我项目的一部分。也就是说,我将.dll复制到项目中的一个文件夹中,并引用了那些.dll。但是当我运行我的项目时,GAC加载首选项让我感到不适,因为输出窗口显示正在加载不同的.dll:

已加载“C:\WINDOWS\Microsoft.Net\assembly\GAC\U MSIL\Microsoft.Build.Framework\v4.0\U 15.1.0.0\U b03f5f7f11d50a3a\Microsoft.Build.Framework.dll”

因此,我通过导航到该位置并查看.dll上的属性来查看在每台机器上加载的.dll

在工作的机器上.dll的版本为15.1.1015。 在不工作的计算机上,.dll的版本为15.3.409

我没有发现有人谈论这个确切的问题,但我看到有人在升级到VisualStudio15.3后谈论有问题。果然,不工作的计算机有Visual Studio 15.3.5,而工作的计算机有Visual Studio 15.2

为了解决这个问题,我使用以下步骤从GAC中删除了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中加载,我只需在项目构造函数中指定版本号:

coreVisualStudioProject = new Project(fileName, null, "14.0", new ProjectCollection());

您是否尝试使用msbuild命令行生成。您应该通过此步骤,否则问题可能在msbuild中。尝试
msbuild
我不知道为什么msbuild.exe会出现问题,因为我还没有执行生成-只是尝试加载.csproj。也就是说,该项目确实在Visual Studio中正确加载,并且在VS 2017的开发人员命令提示符下的msbuild中也可以很好地构建。感谢您在此处共享您的解决方案,您可以将其标记为答案,以便它可以帮助其他遇到相同问题的社区成员。