2013-12-10 22 views
2

我有一個大的解決方案,和(外部庫依賴項)我已經建立項目屬性,其中基於條件符號我鏈接針對舊的(符號缺失)或新版本(符號存在),以及基於更改的接口的一些代碼更改。TFS 2012/MSBuild:添加額外的條件編譯符號已經在項目文件中定義的csproj C#

我曾經將它作爲TFS構建運行了很長一段時間(舊的穩定版本),但現在需要新版本同時運行。因此,我將/ p:DefineConstants =「NEW_LIBRARY」添加爲MSBuild參數。

這裏的問題是,我已經在其他地方的解決方案中有條件符號,並且希望保留這些符號,但是它們被該參數覆蓋。

如何在一個構建中添加條件符號而不在另一箇中(好吧,不要添加它很簡單),而不改變每個項目屬性中已定義的符號?

非常感謝

回答

2

Create a new project configuration所以你可以只通過了Configuration性質,即ReleaseNewLib

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseNewLib|AnyCPU' "> 
    <DebugType>pdbonly</DebugType> 
    <Optimize>true</Optimize> 
    <OutputPath>bin\</OutputPath> 
    <DefineConstants>TRACE;NEW_LIBRARY</DefineConstants> 
    <ErrorReport>prompt</ErrorReport> 
    <WarningLevel>4</WarningLevel> 
    </PropertyGroup> 

>

+0

謝謝!這可能確實有效。我對添加項目配置有很不好的記憶,「只是爲了測試」,然後VS想打開那些最受歡迎的默認值,反過來導致完全不需要的結果。 :)除此之外,你的解決方案將會更加清潔,那麼我現在擁有的就是更簡單,只需切換(本地)配置,而不必編輯定義。 –

相關問題