2011-04-05 66 views
4

我有一個csproj文件,它是兩個不同的Visual Studio解決方案的一部分。該項目文件應該能夠表現稍微不同,取決於它將使用的解決方案。我需要的是可用作'條件'的東西 - 一個以例子$(SolutionName)命名的屬性 - 以自動填充的方式填充。至少,這是我的想法。我沒有發現那樣的事情。使用解決方案信息的msbuild腳本

我也認爲有兩個小項目文件導入公共部分。這可以防止在Visual Studio中編輯所有這些屬性,我猜。它只會在活動的「主文件」中寫入更改,對嗎?

那麼,是否有任何其他方式使用解決方案信息在項目級進行區分?

回答

7

原來有一個名爲$(SolutionName)的屬性。嘗試這個;首先設置環境變量:

> set MSBuildEmitSolution=1 

然後,使用的MSBuild從相同的命令行

> MSBuild My.sln 

你會發現你的解決方案文件的MSBuild項目改造,它將被命名爲建立自己的解決方案文件My.sln.metaproj

只需在文本編輯器中打開該窗口,即可看到其他屬性。檢查這個項目文件中的「Build」目標,你可以看到所有這些屬性在構建項目時都被傳遞到MSBuild任務中,所以你應該能夠根據它們中的任何一個來區分條件。

+0

metaproj文件包含 Debug MySolutionName。 我使用將我的csproj文件中的開關設置爲塊。這工作 - 但只適用於'調試'配置。對於'釋放'$(SolutionName)似乎是空的,我的子句將被使用。 – Michael 2011-04-05 23:09:40

+0

我在第一條評論中錯了。它的工作原理與上述相同。非常感謝,特別是展示了提取這類信息的一般方法。 – Michael 2011-04-05 23:56:29