gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:05:29 28 4
gpt4 key购买 nike

请阅读直到我清楚地表达我的问题。我正在尝试实现一个自定义 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com