在MSBuild构建后事件中访问PreProcessor定义

时间:2015-11-25 14:55:16

标签: visual-studio msbuild preprocessor post-build-event

给出如下的PreProcessor定义:

<PreprocessorDefinitions>%(PreprocessorDefinitions);ENABLE_DEBUGGING=1;</PreProcessorDefinitions>

在MSBuild构建后事件期间是否可以确定ENABLE_DEBUGGING的值?

1 个答案:

答案 0 :(得分:0)

这可能是多种方法之一;仅当ClCompile ItemGroup包含项目时,换句话说,当有要编译的文件时,以及它们对于PreprocessorDefinitions都具有相同的值时,它才会起作用;它将ENABLE_DEBUGGING=字符串后面的数字存储在DebugVal属性中。:

<Target Name="CheckValue" BeforeTargets="BuildGenerateSources">
  <PropertyGroup>
    <PreProc>%(ClCompile.PreprocessorDefinitions)</PreProc>
    <DebugVal>$([System.Text.RegularExpressions.Regex]::Match( $(PreProc), 'ENABLE_DEBUGGING=(\d)' ).Groups[ 1 ].Value )</DebugVal>
    </PropertyGroup>
  <Message Text="ENABLE_DEBUGGING = $(DebugVal)" />
</Target>

来自herehere

的灵感