2013-02-24 39 views
20

我想通過從外部視覺Studio.The問題的MSBuild建立一個.vcxproj項目時,「擺脫」 $(SolutionDir)是有很多$(SolutionDir)內的.vcxproj文件,顯然只有在解決方案加載時才能正確設置。如何構建VS從外部視覺工作室

當我更換$(SolutionDir)與它的工作實際的絕對路徑,問題是,其他人在其他機器上使用相同的項目文件的工作...

有誰知道任何解決方案或劈死解決這個問題?

感謝,任何幫助深表感謝。

西蒙

回答

30

你可以通過參數的參數設置變量:

/p:SolutionDir=path 

所以,而不是編輯解決方案文件,你可以創建一個構建腳本設置環境並據此執行的MSBuild ,將Visual Studio文件保留爲開發工作。

6

您可以使用相對路徑。 不知道VS2010的問題,但它保證了自VS2012以來的作品。 如果項目文件夾是正確的解決方案文件夾下,然後相對路徑是.. \ 這的方式可以從以前的答案參數變量相結合。

<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> 
+0

例如,覆蓋.targets時,遍歷目錄在TFS checkin生成時不起作用。需要絕對路徑。 – Shiv 2016-12-13 03:16:58

+0

請註明這應該放在相關'* .csproj'文件的''元素中。我覺得這是你答案中缺少的重要信息。 – 2017-12-19 23:34:42

5

明確通過SolutionDir作爲參數的解決方案對我來說是不夠的。 即,如果我想要構建的項目具有不同構建配置的相關性,則構建失敗,並顯示This project doesn't contain the Configuration and Platform combination of <my target configuration>錯誤。

這是有道理的,因爲我沒有指定的依賴目標配置,因此它試圖針對相同的配置項目,我要建,這是他們沒有(對我來說)。

由於解決方案文件包含在溶液(給出了一些解決方案配置)所有項目的構建配置,我們要利用這個解決方案來解決這個問題。幸運的是,msbuild允許我們構建一個解決方案並傳遞一個特定的目標項目作爲參數,這隻會導致該項目的構建(以及它的依賴關係)。

msbuild MySolution.sln /t:MyProject