2015-11-18 161 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

相關問題