2015-09-17 49 views
0

我有一個項目文件,應該建立另一個解決方案。我嘗試使用MSBuild任務對於這一點,就像這樣:MSBuild任務不生成解決方案文件

<MSBuild Projects="MySolution.sln" Properties="Configuration=$(Configuration)"/> 

我嘗試了很多變種,比如提供硬編碼的配置,目標重建等。當我傳遞錯誤的解決方案名稱,不存在的配置或目標等時,構建報告錯誤,因此它肯定會加載解決方案和項目文件。它雖然退出相對較快,但沒有產出。根據文檔和示例,這應該工作。我也嘗試爲項目傳遞一個ItemGroup,包括示例或MSBuild - How to build a .NET solution file (in an XML task script) from pre-written command line commands建議的項目特定屬性,但這也不起作用。它運行沒有錯誤,但沒有輸出。

當傳遞項目文件列表(或單個項目文件)時,它會正確構建,但問題在於項目之間的依賴關係未正確解析。最後,我必須提供解決方案中的所有項目文件,並將它們添加到列表中,這是我想要避免的。

那麼,爲什麼解決方案建設不起作用,即使它應該?這裏有什麼問題?

回答

1

這是一個.net項目嗎?如果是這樣,你可能需要通過一個平臺以及一個配置。

<MSBuild 
    Projects="MySolution.sln" 
    Targets="build" 
    Properties="Configuration=$(Configuration);Platform=$(Platform)" /> 

如果項目只包含網站和庫然後該平臺應該是Any CPU如果您的解決方案只包含可執行文件,然後x86x64或者如果它是不同類型平臺的混合物,那麼你可以使用mixed platforms

要查看可用的解決方案,請在Visual Studio中打開解決方案,右鍵單擊解決方案資源管理器中的解決方案,然後選擇「配置管理器」,然後選擇「有效解決方案平臺」下拉菜單Active Solution Platforms

+0

好的,那是問題所在。通過「任何CPU」將正常工作。然而,傳遞$(平臺)不起作用,即使我處於任何CPU構建中。傳遞的值是「AnyCPU」(沒有空格)。任何想法,爲什麼呢? – OregonGhost

+0

這是一個bug http://stackoverflow.com/a/4209924/568475 –

+0

是的,我發現了另一個錯誤:由於某種原因,當像這樣構建時,MSBuild不維護項目依賴關係。一個官方聲明是,當解決方案中沒有找到配置或平臺時,它會這樣做,但在這種情況下,兩者都是。如果指定了「錯誤」的平臺,它不會構建任何東西。我試圖用Exec代替MSBuild,但是這會導致下一個問題(找到msbuild.exe)... – OregonGhost

相關問題