2014-09-22 44 views
0

我有一個進口.msbuild限定含有除其他事項外預處理器定義,屬性組:設置DefineConstants動態經由進口的MSBuild

<PropertyGroup> 
    <DefineConstants>$(DefineConstants);MY_CONSTANT_VALUE</DefineConstants> 
</PropertyGroup> 

這是<import>編入兩個的csproj和vcxproj文件。在構建時,C#預處理器似乎沒有定義常量的可見性。然而,在同一文件中的等價C++預處理器定義工作正常,和常量發現:

<ItemDefinitionGroup> 
    <ClCompile> 
    <PreprocessorDefinitions>$(PreProcessorDefinitions);MY_CONSTANT_VALUE</PreprocessorDefinitions> 
    </ClCompile> 
<ItemDefinitionGroup> 

任何想法,爲什麼在C++中這只是工程?

回答

0

默認屬性組的聲明並未顧及有關以前存在的性質和定義是這樣的:

<DefineConstants>TRACE</DefineConstants> 

那麼確保你在最後的.csproj.vbproj的導入您的.msbuild文件,不在一開始。

如果這沒有幫助 - 你能否提供一個msbuild的診斷級別爲日誌並在此發佈鏈接。

+0

謝謝,我試着在csproj的末尾導入,但常量仍然未定義。最後,我修改了每個csproj中的以包含在.msbuild導入中定義的新宏。現在這樣很好,因爲我只需要處理器前處理常量的靈活性,但是能夠像vcxproj文件一樣繼承整個XML塊就非常好。 – pdm2011 2014-09-25 09:59:51