MSBuild 属性和变量重载

发布于 2025-01-04 16:22:22 字数 358 浏览 1 评论 0原文

假设我启动了一个构建脚本,定义名为 SampleScript ,指定参数 /p:MyPrefix=Custom。脚本中有以下代码:

<PropertyGroup Condition="$(BuildDefinitionName)=='SampleScript'">
    <MyPrefix>Default</MyPrefix>
</PropertyGroup>

据我所知,首先将 MyPrefix 设置为“自定义”,然后将其重载为“默认”(我对吗?)。如果是这样,有什么方法可以使用户指定的参数具有更高的优先级,从而使其不会过载?

Let's say I launch a build script, definition named SampleScript , specifying the parameter /p:MyPrefix=Custom. There is the following code in the script:

<PropertyGroup Condition="$(BuildDefinitionName)=='SampleScript'">
    <MyPrefix>Default</MyPrefix>
</PropertyGroup>

As I get, first MyPrefix is set to "Custom", then it's overloaded to "Default" (am I right?). If so, is there any way to make a user-specified parameter more prioritized, so it's not overloaded?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

埋葬我深情 2025-01-11 16:22:22

您只能通过动态更改目标内的值来重载在命令行上指定的属性...

<Project ...>
   <PropertyGroup>
      <Value>FromStaticProperty</Value>
   </PropertyGroup>

   <Target Name="PropertyPrecedence">
      <Message Text="Value = '$(Value)'" />
      <PropertyGroup>
         <Value>FromDynamicProperty</Value>
      </PropertyGroup>
      <Message Text="Value = '$(Value)'" />
   </Target>
</Project>

> msbuild /p:Value=FromCommandLine

在上面的示例中,给定命令行提供的值,“FromStaticProperty”将被忽略,但“FromDynamicProperty”将被忽略用过的。

摘自 MSBuild 诡计技巧#27

You can only overload a property specified on the command line by dynamically changing the value inside a target...

<Project ...>
   <PropertyGroup>
      <Value>FromStaticProperty</Value>
   </PropertyGroup>

   <Target Name="PropertyPrecedence">
      <Message Text="Value = '$(Value)'" />
      <PropertyGroup>
         <Value>FromDynamicProperty</Value>
      </PropertyGroup>
      <Message Text="Value = '$(Value)'" />
   </Target>
</Project>

> msbuild /p:Value=FromCommandLine

In the above example, the "FromStaticProperty" will be ignored given the value supplied from the command line, but the "FromDynamicProperty" will be used.

Excerpted from MSBuild Trickery trick #27

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文