2014-01-30 36 views
0

我有安装的的ItemGroup,每一个包含这样的属性,它是从输出文件夹(分隔)的名称:的MSBuild枢转的ItemGroup上分隔字符串

<ItemGroup> 
    <Installers Include="Installer1.msi"> 
    <Folders>Folder1,Folder4</Folders> 
    </Installers> 

    <Installers Include="Installer2.msi"> 
    <Folders>Folder1,Folder2,Folder3,Folder4</Folders> 
    </Installers> 
</ItemGroup> 

我希望能够复制每个安装程序放入指定的每个文件夹中。我已经来回试图找出一种方法来额外的元数据添加到安装程序,但似乎无法得到的是这样的一个最后的名单:

  1. Installer1.msi:Folder1中
  2. Installer1.msi:Folder4
  3. Installer2.msi:Folder1中
  4. Installer2.msi:文件夹2
  5. Installer2.msi:Folder3
  6. 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> 

,但我宁愿不要,因为这就是我们现在的人有总是想念事情(因为它非常冗长)。

+0

我猜测对方的要求,我想,是我像这样为N文件夹工作。例如。我不想先知道我的文件夹名称,我更愿意发现它们,因为它们位于“文件夹”属性中。 –

回答

0

用分号分隔的文件夹名称,然后反安装程序和文件夹的值:

<Project ToolsVersion="4.0" DefaultTargets="Inversionator" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <ItemGroup> 
     <Folders Include="Folder1;Folder4"> 
      <Installer>Installer1.msi</Installer> 
     </Folders> 
     <Folders Include="Folder1;Folder2;Folder3;Folder4"> 
      <Installer>Installer2.msi</Installer> 
     </Folders> 
    </ItemGroup> 

    <Target Name="Inversionator"> 
     <Message Text="%(Folders.Installer) %(Folders.Identity) " Importance="high" /> 
    </Target> 
</Project> 

输出为现在的任务是:

Installer1.msi Folder1 
Installer1.msi Folder4 
Installer2.msi Folder1 
Installer2.msi Folder2 
Installer2.msi Folder3 
Installer2.msi Folder4 
+0

对不起,接受迟到。我花了一段时间思考,如果这能满足我所有的审美要求并经过反思,确定它的确如此! –