Msbuild 如何在内联任务中编辑或添加属性
我需要使用属性调用msbuild任务,只能在运行时计算其名称。我试着用这个脚本来做 Main.xml 我期望这个输出:Msbuild 如何在内联任务中编辑或添加属性,msbuild,Msbuild,我需要使用属性调用msbuild任务,只能在运行时计算其名称。我试着用这个脚本来做 Main.xml 我期望这个输出: AAA = 123;BBB=456; BBB = AAA = 123; BBB = 456; 如果希望内联任务生成多个项(与其他语言中的数组或列表等效的msbuild),则应该这样声明,而不是使用属性(即单个键/值对)。这在一些内联任务中有介绍,但是它使用成熟的Itaskitem,而仅仅使用字符串数组就可以了。因此: 从内联任务输出一个System.String[]
AAA = 123;BBB=456;
BBB =
AAA = 123;
BBB = 456;
如果希望内联任务生成多个项(与其他语言中的数组或列表等效的msbuild),则应该这样声明,而不是使用属性(即单个键/值对)。这在一些内联任务中有介绍,但是它使用成熟的Itaskitem,而仅仅使用字符串数组就可以了。因此:
- 从内联任务输出一个
System.String[]
- 使用
ItemName=
- 使用
表示法将该项传递给MSbuild任务(这是它所期望的)@()
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="14.0" DefaultTargets="Make">
<UsingTask TaskName="GetVars" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<Result ParameterType="System.String[]" Output="true"/>
</ParameterGroup>
<Task>
<Code Type="Fragment" Language="cs">
<![CDATA[
this.Result = new System.String[]{"AAA=123", "BBB=456"};
]]>
</Code>
</Task>
</UsingTask>
<Target Name="Make">
<GetVars>
<Output TaskParameter="Result" ItemName="Vars"/>
</GetVars>
<MSBuild Projects="$(MSBuildThisFile)" Targets="Show" Properties="@(Vars)"/>
</Target>
<Target Name="Show">
<Message Text="AAA = $(AAA)"/>
<Message Text="BBB = $(BBB)"/>
</Target>
</Project>
请提供一个示例,以便其他人可以尝试代码的相关部分。无论如何,如果我正确理解您想要的是什么,这是非常标准的msbuild,并且在内联任务的文档中也有介绍:。简而言之:如果您想要一个项而不是一个属性,那么输出一个数组而不是一个字符串,并使用ItemName=“Vars”。后来我看了一下这个概念
AAA = 123;
BBB = 456;
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="14.0" DefaultTargets="Make">
<UsingTask TaskName="GetVars" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<Result ParameterType="System.String[]" Output="true"/>
</ParameterGroup>
<Task>
<Code Type="Fragment" Language="cs">
<![CDATA[
this.Result = new System.String[]{"AAA=123", "BBB=456"};
]]>
</Code>
</Task>
</UsingTask>
<Target Name="Make">
<GetVars>
<Output TaskParameter="Result" ItemName="Vars"/>
</GetVars>
<MSBuild Projects="$(MSBuildThisFile)" Targets="Show" Properties="@(Vars)"/>
</Target>
<Target Name="Show">
<Message Text="AAA = $(AAA)"/>
<Message Text="BBB = $(BBB)"/>
</Target>
</Project>
Show:
AAA = 123
BBB = 456