2015-11-18 124 views
10

我安装了一台新电脑并安装了VS2015。编译项目我目前正在处理一些无效代码的结果(ILSpy创建不可编译的源代码)。它使用ToolsVersion 12在VS2013中正常工作。使用Visual Studio 2015编译ToolsVersion 12

日志文件告诉我ToolsWersion 12丢失,所以我安装了它。然而无论我做了什么或设置了什么,它总是使用ToolsVersion 14进行编译。我可以手动调用VS2013附带的MSBuild.exe(使用ToolsVersion 12)并且代码是正确的。与VS2015附带的MSBuild.exe一样(使用ToolsVersion 14)会导致INCORRECT代码。因此,所有我需要的是VS2015使用工具集12

MSDN说:

“在Visual Studio 2013开始,MSBuild的工具集的版本是一样的Visual Studio版本号的MSBuild默认为在Visual这个工具集Studio和命令行,无论项目文件中指定的ToolSet版本如何,可以使用/ ToolsVersion标志覆盖此行为。有关详细信息,请参阅覆盖ToolsVersion设置。

设置这样使用MSBuild手动工作正常,但我如何在VS 2015中设置?没有任何环境变量有效,它总是使用工具集14!

+1

您必须卸载.NET 4.6,以便基于罗斯林编译器将被删除。否则,C#编译器可能会继续为您提供相同的无效程序集。但一般来说,ILSpy不适用于Roslyn编译的程序集。所以你的程序集可能确实有效,只是ILSpy无法理解它们。你可以查看ILSpy的bug列表来了解更多。 –

+0

对不起,你的建议没有解决问题!问题的确是VS使用MSBuild 14.正如我之前提到的,如果我从12文件夹运行MSBuild,一切都很好。我重命名了14文件夹,现在VS不加载项目,所以它寻找14文件夹。该解决方案很简单,如果你知道如何改变/设置$(MSBuildToolsVersion)变量。这显然设置为14,并且ToolsVersion属性不再受到尊重(如Microsoft未提供替代工作解决方案所述)。我将14文件夹重命名为12,并导致其他崩溃... ARGH! – user1029883

+0

我不知道为什么这已经downvoted。这个问题似乎仍然是“我如何使用早期的ToolsVersion构建VS2015?” –

回答

3

我在这里留下这个答案,以帮助其他人,但它没有帮助原始的海报,因为根据@ user1029883,当VS2015与12.0构建工具一起安装时,它不起作用(请参阅@ alexandrul的评论如下),而不是多个版本的Visual Studio:对不起。


遗憾的是,似乎没有要做到这一点一简单方式。然而,有,一个繁琐的方式:

  • 设置环境变量MSBUILDLEGACYDEFAULTTOOLSVERSION
  • 确保在所有的项目文件的顶层Project元素ToolsVersion属性设置为所需的ToolsVersion

Overriding ToolsVersion Settings page on MSDN

+0

我曾尝试过,它不起作用。在我的顶级项目文件和环境变量下面: <?xml version =“1.0”encoding =“utf-8”?> MSBUILDLEGACYDEFAULTTOOLSVERSION 1 – user1029883

+0

原谅我的无知:你是怎么安装toolsversion 12.0无需安装VS2013? –

+0

@GuyBoltonKing http://www.microsoft.com/en-us/download/details.aspx?id=40760“如果您的计算机上没有安装Visual Studio,则可以使用Build Tools 2013构建托管应用程序。此下载中还包含Visual Basic和C#编译器(在早期版本中,这些工具包含在独立.NET Framework中)。“ – alexandrul

相关问题