2015-12-06 36 views
0

我在我的解決方案中有多個項目 - 具有x86和x64平臺的C++以及具有任何CPU(第三方dll),x86和x64平臺的C#。這個項目相互依賴。 我有兩種解決方案配置 - x86和x64。當我在VS中選擇x86時,所有C++項目都構建爲x86,所有第三方C#項目都構建爲Any CPU,而我的C#項目構建爲x86。 x64爲我的項目生成x64,爲第三方C#項目生成任何CPU。 這適用於Visual Studio。 然而,當我試圖通過的MSBuild(AppVeyor CI)來構建這個我得到這個錯誤:MSBuild。使用x86,x64和任何CPU平臺構建解決方案

C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets (723,5): error : The OutputPath property is not set for project 'Atf.Core.vs201 0.csproj'. Please check to make sure that you have specified a valid combinati on of Configuration and Platform for this project. Configuration='Debug' Plat form='x86'. You may be seeing this message because you are trying to build a p roject without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. [D:\Engine\Code\Dependenc ies\ATF\Framework\Atf.Core\Atf.Core.vs2010.csproj]

它看起來像的MSBuild不考慮解決方案的平臺。它試圖在指定的平臺上構建解決方案中的每個項目。 我試圖解決,添加/ p:OutputPath = bin \ Debug到MSBuild腳本,而x86編譯成功,x64給了我很多新的錯誤:(

所以我的問題。 MSBuild從解決方案映射獲取平臺,而不是試圖按照項目原樣使用它們?

PS我使用Premake生成我的項目,因此向解決方案添加一些屬性可能會非常棘手。以避免「修復」第三方項目

+0

您是否嘗試過指定平臺和配置MSBuild SolutionName.sln/property:Configuration = Release/property:Platform = x64'? –

+0

是的,這就是我嘗試在本地構建項目的方式。它給了我第一篇文章中提到的錯誤 – StiX

回答

0

我發現這個問題的唯一解決方案是遵循我的解決方案中的以下規則:

  • 爲所有項目(如「Intel」,「UniquePlatform」或「RogerRabbit」)創建一個唯一的平臺名稱。
  • 爲每個項目選擇正確的參數組。
  • 刪除所有其他平臺的所有項目。
  • 如果我不打算「修復」它們,切勿將第三方來源添加到我的解決方案中。如果需要,我在本地Feed上創建一個nuget包。

然後,我可以使用msbuild構建,並且有更少的未使用(未使用,因爲沒有意義)平臺/配置組合。

相關問題