动态创建的MSBuild属性在calltarget子目标使用(Dynamically create

2019-09-17 05:30发布

如何在MSBuild的创建属性,这样我可以在CallTarget指令中使用它?

从本质上讲,我试图调用目标“子程序”,其中属性作为参数。

我试图使它试图创建一个属性玩具的csproj文件,然后调用其回声它的目标。 它回声空。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="Test">
    <CreateProperty Value="AAA">
        <Output TaskParameter="Value" PropertyName="Foo" />
    </CreateProperty>
    <CallTarget Targets="Test2" />
  </Target>
  <Target Name="Test2">
    <Message Text="Target Test2: Foo=$(Foo)" />
  </Target>
</Project>

运行msbuild TestProj.csproj /t:Test输出:

Test:
  Target Test: Foo=AAA
Test2:
  Target Test2: Foo=

我想这个问题是我在命令式的方式思考的MSBuild(这显然是一个常见的错误),所以我希望有人能更正一下,似乎是在怎样的MSBuild作品非常根本性的误解。

Answer 1:

您可以使用目标属性DependsOnTarget获得通过从任务到任务的属性。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="Test">
    <CreateProperty Value="AAA">
        <Output TaskParameter="Value" PropertyName="Foo" />
    </CreateProperty>
  </Target>
  <Target Name="Test2" DependsOnTargets="Test">
    <Message Text="Target Test2: Foo=$(Foo)" />
  </Target>
</Project>

刚刚所说的第二个目标。



Answer 2:

哇靠。 这显然是在MSBuild的错误?

与覆盖性能的MSBuild

http://weblogs.asp.net/bhouse/archive/2006/03/20/440648.aspx

编辑:或者,这是一个功能? https://stackoverflow.com/a/7539455



文章来源: Dynamically create a property in msbuild to be used in a calltarget subtarget
标签: msbuild