4

アイテムのメタデータ値を更新する必要があります。値を追加するのは簡単です:

<ItemDefinitionGroup>
  <ClCompile>
    <PreprocessorDefinitions>FOO;BAR;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  </ClCompile>
</ItemDefinitionGroup>

ただし、値の一部を削除する必要があります。理想的には、次のようなものが機能しますが、機能しません。

<ItemDefinitionGroup>
  <ClCompile>
    <PreprocessorDefinitions>%(PreprocessorDefinitions.Replace('FOO;',''))</PreprocessorDefinitions>
  </ClCompile>
</ItemDefinitionGroup>

MSBuild 4 でこれを達成する方法はありますか?

4

2 に答える 2

2

私は同じことをしようとしていましたが、文字列から定義を削除する方法がわかりませんでしたが、追加のプロパティを発見しました: UndefinePreprocessorDefinitions.

<ItemDefinitionGroup>
  <ClCompile>
    <UndefinePreprocessorDefinitions>FOO</UndefinePreprocessorDefinitions>
  </ClCompile>
</ItemDefinitionGroup>

これにより、以前の FOO の定義が取り消されます。-DFOO -UFOO何も渡さない代わりにコンパイラに渡すのは少しばかげているように見えるかもしれませんが、同じように機能します。

于 2012-08-14T18:39:42.273 に答える