msbuild - 有什么方法可以更新 MSBuild 项元数据值吗?

标签 msbuild

我需要更新项目元数据值。很容易添加该值:

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

但是,我需要做的是删除部分值。理想情况下,这样的东西会起作用,但事实并非如此:

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

有什么方法可以在 MSBuild 4 中完成此任务吗?

最佳答案

我试图做同样的事情,虽然我不知道如何从字符串中删除定义,但我确实发现了一个额外的属性:UndefinePreprocessorDefinitions

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

这将取消之前的 FOO 定义。将 -DFOO -UFOO 传递给编译器而不是什么都不传递可能看起来有点傻,但它的效果也很好。

关于msbuild - 有什么方法可以更新 MSBuild 项元数据值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10742059/

相关文章:

visual-studio - Visual Studio 更新 (16.8.1) 导致 CI​​ 构建失败

msbuild - 如何使用 MSBuild 从 powershell 脚本生成代码

c# - 如何同时为 .Net 3.5 和 4 编译项目

c# - 由于缺少依赖项,MSBuild 清理操作失败

msbuild - 如何使用 MSBuild 更改文件的构建操作

tfs - 在 TFS 构建中修改 web.config 中的设置

vb.net - “GenerateResource”任务CLR2运行时错误

c++ - MSBuild 使用错误的(平台)版本的 Tracker.exe

.net - 编译解决方案时MSBuild找不到SGen

msbuild - 使用 VS Code 发布 Web 部署