gpt4 book ai didi

c# - 如何使用 MSBuild 在项目属性中附加条件编译符号?

转载 作者:可可西里 更新时间:2023-11-01 09:01:07 26 4
gpt4 key购买 nike

我遇到了这样一种情况,我有一个 MSBuild 脚本需要读取在项目的构建属性中设置的条件编译符号。我的 MSBuild 脚本文件中有以下代码

  <PropertyGroup>
<DefineConstants>$(DefineConstants);INTER</DefineConstants>
</PropertyGroup>


<Target Name="Compile">
<Message Text="$(DefineConstants)"/>
<MSBuild Projects="CustomAssemblyInfo.csproj" Targets="Rebuild" Properties="DefineConstants=$(DefineConstants)" />
</Target>

我假设 $(DefineConstants);将包含已设置的条件编译符号的值,我可以在这些值之后附加任何内容,如本例中的 INTER 但不知何故,项目属性中设置的值未在此处传递。谁能帮我解决我遗漏的问题?

最佳答案

通过 Properties 传递的属性MSBuild的属性(property)task 是所谓的 global 属性,与通过 /p: 传递的属性相同在命令行上。它们优先于任何其他属性或环境变量,即使是那些无条件定义的属性或环境变量,即 DefineConstants在你的.csproj .

通过传递您自己的 DefineConstants首先你要防止它被稍后从 .csproj 设置, 所以为了防止它添加像 $(Constants) 这样的东西在您的项目属性窗口中,这将重新定义 DefineConstants作为<DefineConstants>TRACE;DEBUG;$(Constants)</DefineConstants>并通过 Constants而是从您的 MSBuild/NAnt 脚本。

编辑:根据下面的@sǝɯɐſ评论

https://i.imgur.com/jZiVy7J.png

enter image description here

关于c# - 如何使用 MSBuild 在项目属性中附加条件编译符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24157714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com