2015-11-06 37 views
1

我有一個需要與TFS一起構建的解決方案。 C#項目和一些C++項目升級到.Net Framework 4.6和Platform Toolset v140。但一些第三方C++項目無法升級(它們在V110中)。 MSBuild無法爲項目使用適當的工具集版本。它返回此錯誤:是否有可能在解決方案中使用不同平臺工具集的項目? (MSBuild)

C:\ Program Files文件(x86)的\的MSBuild \ Microsoft.Cpp \ V4.0 \ V110 \ Microsoft.Cpp.Platform.targets(44):該版本的V140工具(平臺Toolset ='v140')找不到。要使用v140構建工具構建,請單擊「項目」菜單或右鍵單擊解決方案,然後選擇「更新VC++項目...」。安裝v140以使用v140構建工具構建。

有沒有什麼辦法讓這個工作? MSBuild有可能構建一個包含不同平臺工具集項目的解決方案?

謝謝 阿拉什

+0

你需要管理的第三方C++項目的源代碼? –

+0

我不完全知道你的意思是管理。但我可以告訴你的是,爲了繼續使用它們,我需要將它們保留在當前平臺工具集(V110)中。但其餘的項目(C++和C#)都已升級。 – Arash

+0

我在這裏有一個類似的問題:只有C++項目的解決方案,其中一個設置爲ToolsVersion =「14.0」,使用PlatformToolset> v140,其他所有使用v120的項目。當加載到VS2013(即12.0)時,它只是忽略了v140,並像使用v120一樣構建。在使用msbuild的命令行上也是如此。在Visual Studio Online中構建一切(afaik是新的TFS?),儘管我得到了與發佈完全相同的錯誤。爲什麼? – stijn

回答

-1

你並不需要指定平臺工具集的MSBuild參數爲您的項目。

我嘗試在我的本地enviroment.A解決方案,包括三個項目 C#(平臺工具集V140),C++(平臺工具集V140),C++(平臺工具集V120)。沒有在MSBuild的參數指定平臺工具集。建立成功。

+0

它在Visual Studio中完全正確,但與TFS無關。我沒有在_Build Arguments_中指定工具集版本,只在每個項目的屬性中指定! – Arash

0

該問題由我的同事Phil解決。基本上所有你需要做的就是改變MSBuild ToolPath屬性指向正確的MSBuild版本。由於MSBuild的每個版本都支持早期版本,因此應指向最高版本的MSBuild。

因此,在Visual Studio中打開生成過程模板並導航到Microsoft.TeamFoundation.Build.Workflow.Activities.MSBuild。要到達那裏,您應該轉到以下路徑:

嘗試編譯,測試和關聯... - >序列 - >編譯,測試和關聯... - >嘗試編譯和測試 - >編譯和測試 - >對於...中的每個配置 - >編譯和測試... - >如果BuildSettings.HasProjectsToBuild - >對於BuildSettings中的每個項目... - >編譯項目和複製 - >嘗試編譯項目 - >編譯項目

現在右鍵單擊「運行MSBuils for Projects」並選擇屬性。在這裏你有一個屬性「ToolPath」,你可以指定MSBuild地址(在我的例子中是「C:\ Program Files(x86)\ MSBuild \ 14.0 \ Bin」)。

這應該可以解決問題。

乾杯,

阿拉什

相關問題