如何在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的工作原理。
答案 0 :(得分: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>
只需拨打第二个目标。
答案 1 :(得分:0)
神圣的废话。这显然是msbuild中的一个错误?
Overwrite properties with MSBuild
http://weblogs.asp.net/bhouse/archive/2006/03/20/440648.aspx
编辑:或者这是一个功能? https://stackoverflow.com/a/7539455