【发布时间】:2014-02-04 04:37:28
【问题描述】:
我有一个安装程序的 ItemGroup,每个安装程序都包含一个属性,它是输出文件夹的名称(分隔),如下所示:
<ItemGroup>
<Installers Include="Installer1.msi">
<Folders>Folder1,Folder4</Folders>
</Installers>
<Installers Include="Installer2.msi">
<Folders>Folder1,Folder2,Folder3,Folder4</Folders>
</Installers>
</ItemGroup>
我希望能够将每个安装程序复制到指定的每个文件夹中。我一直在试图找出一种向安装程序添加额外元数据的方法,但似乎无法获得这样的最终列表:
- Installer1.msi:Folder1
- Installer1.msi:Folder4
- Installer2.msi:Folder1
- Installer2.msi:Folder2
- Installer2.msi:Folder3
- Installer2.msi:Folder4
所以我可以执行如下操作:
<Copy SourceFiles="@(Installers)" DestinationFolder="%(Installers.Folder)" />
我知道我可以将我的 ItemGroup 修改为:
<ItemGroup>
<Installers Include="Installer1.msi">
<Folder>Folder1</Folder>
</Installers>
<Installers Include="Installer1.msi">
<Folder>Folder4</Folder>
</Installers>
<Installers Include="Installer2.msi">
<Folder>Folder1</Folder>
</Installers>
<Installers Include="Installer2.msi">
<Folder>Folder2</Folder>
</Installers>
<Installers Include="Installer2.msi">
<Folder>Folder3</Folder>
</Installers>
<Installers Include="Installer2.msi">
<Folder>Folder4</Folder>
</Installers>
</ItemGroup>
但我宁愿不这样做,因为这就是我们现在所拥有的,人们总是会错过一些东西(因为它太冗长了)。
【问题讨论】:
-
我想我想要的另一个要求是我希望它适用于 N 文件夹。例如。我不想事先知道我的文件夹名称,我更愿意发现它们,因为它们位于 Folders 属性中。
标签: msbuild msbuild-4.0