繁体   English   中英

如何将PropertyGroup / ItemGroup中可变数量的项传递给msbuild脚本

[英]how to pass variable number of items in PropertyGroup/ItemGroup to msbuild script

请阅读,直到我清楚地陈述我的问题。 我正在尝试实现一个自定义的msbuild任务,该任务将接受来自msbuild脚本的可变数量的输入参数。 我知道海关任务中的输入参数数组

public ITaskItem[] ArrayofItems { get; set; }

这些可以使用propertygroup / itemgroup声明如下

<PropertyGroup>
<Item1>1</Item>
<Item2>2</Item>
<Item3>3</Item>
<Item4>4</Item>
<Item5>5</Item></PropertyGroup>

 <ItemGroup>
<File Include="1"></File>
<File Include="2"></File>
<File Include="3"></File>
<File Include="4"></File>
<File Include="5"></File>  </ItemGroup>

然后从VS 2010命令行我可以设置/覆盖属性如下

msbuild somefile.csproj / t:MyTarget /p:Item1=Name1;Item2=Name2...etc

我的问题是: - 是否可以在构建文件中声明可变数量的propertygroup / itemgroup,以便我可以使用propertygroup / itemgroup从msbuild命令行传递'n'变量参数?

msbuild somefile.csproj / t:MyTarget / p:Item1 = Name1; Item2 = Name2; ItemN = NameN('N'仅用于说明目的)

这甚至可能吗?

在此先感谢,任何帮助将不胜感激。

如果你像这样调用你的构建项目......

> msbuild My.proj /p:ItemProperty="1;2;3;4;5"

该项目就是这样做的......

<ItemGroup>
    <FromProperty Include="$(ItemProperty)" />
</ItemGroup>
<Message Text="%(FromProperty.Identity)" />

...你基本上将一个属性转换为一个项目数组。 如果要转换为动态创建的属性,那么在脚本的其余部分中没有简单的方法可以引用它们,因为在编写脚本时,您不会提前知道它们的名称。

摘自MSBuild Trickery ,技巧#30,其中包含许多关于此操作的额外细节

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM