请阅读直到我清楚地表达我的问题。我正在尝试实现一个自定义 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,其中有很多页关于此操作的附加细节
关于msbuild - 如何将 PropertyGroup/ItemGroup 中可变数量的项目传递给 msbuild 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11794756/