如何让 MSbuild 仅使用“DefineConstants”之一进行条件测试?

Emb*_*ude 6 msbuild compilation include conditional-statements

我在 C# 项目中将条件编译符号定义为“ABC;XYZ”,并且我可以在项目 XML 文件中使用以下内容,以便在 MSBuild 期间有条件包含项目代码文件:

<Compile Include="SomeFile.cs" Condition="$(DefineConstants)'=='ABC;XYZ'"/>
Run Code Online (Sandbox Code Playgroud)

但我需要类似以下的东西,但它不起作用:

<Compile Include="SomeFile.cs" Condition="$(DefineConstants)'=='ABC'"/>
Run Code Online (Sandbox Code Playgroud)

是否可以仅使用其中一个定义常量进行条件测试?

Emb*_*ude 10

我想通了...这个链接有帮助。

本质上,您只需查看该字符串,看看它是否包含您想要作为条件基础的标签。就我而言,这是它的代码:

<Compile Include="SomeFile.cs" Condition="$(DefineConstants.Contains('ABC'))" />
Run Code Online (Sandbox Code Playgroud)

  • @zafar `Condition="!$(DefineConstants.Contains('NET5_0_OR_GREATER'))"`。检查[此处](https://learn.microsoft.com/en-us/visualstudio/msbuild/msbuild-conditions?view=vs-2022) (5认同)