通过MSBuild导入动态设置DefineConstants

时间:2014-09-22 22:30:47

标签: msbuild preprocessor csproj vcxproj

我有一个.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 ++的任何想法?

1 个答案:

答案 0 :(得分:0)

默认属性组声明不能满足以前存在的属性,并且定义如下:

<DefineConstants>TRACE</DefineConstants>

因此,请确保您在.csproj.vbproj的末尾导入.msbuild文件,而不是在开头。

如果这没有帮助 - 您可以在此处提供msbuild的日志,其中包含详细程度的诊断级别和帖子链接。