копирование списка файлов с разделителями с помощью MSBuild - PullRequest
3 голосов
/ 26 апреля 2011

У меня есть строковое значение, которое в правильной группе, которая читается из файла config.xml, который выводится как "c: \ test \ file1; c: \ test2 \ file2", мне нужно скопировать этот список в папку назначения с помощью MSBuild. Как мне это сделать?Добиться этого?

<Target Name="CopyFiles">  
    <ItemGroup>
        <FilesToCopy 
            Include="@(filesToCopy)"                 
            Exclude="**\*trash*"/>
    </ItemGroup>
    <Copy SourceFiles="@(filesToCopy)"          
         DestinationFiles="@(filesToCopy->'$(Dest)\%(RecursiveDir)\%(Filename)%(Extension)')"          
         ContinueOnError="true"/></Target>

в приведенном выше коде @filesToCopy включает список файлов, разделенных запятыми.

Ответы [ 3 ]

1 голос
/ 26 апреля 2011

Вы не должны заботиться о точке с запятой в качестве разделителя. Задача копирования MSBuild в этом случае работает правильно.

Это показано в примере документации MSDN:

<ItemGroup>
    <MySourceFiles Include="a.cs;b.cs;c.cs"/>
</ItemGroup>

<Target Name="CopyFiles">
    <Copy
        SourceFiles="@(MySourceFiles)"
        DestinationFolder="c:\MyProject\Destination"
    />
</Target>

из объяснение задачи MSDN Copy

0 голосов
/ 27 апреля 2011

Рассматривать filesToCopy как свойство, а не ItemGroup:

<FilesToCopy Include="$(filesToCopy)" Exclude="**\*trash*"/>

Затем, когда вы вызываете цель CopyFiles, заполните filesToCopy списком файлов с разделителями:

msbuild CopyFiles.proj /t:CopyFiles /p:filesToCopy="c:\test\file1;c:\test2\file2"

или с помощью задачи MSBuild :

<Target Name="CallCopyFiles">
    <MSBuild Projects="CopyFiles.proj" Properties="filesToCopy=c:\test\file1;c:\test2\file2"/>
</Target>
0 голосов
/ 26 апреля 2011

Если вам нужно избежать точки с запятой, вам нужно избежать ее, используя% 3b, для получения дополнительной информации обратитесь к здесь

Если вам нужна полная информация, вы идете

<ItemGroup>
      <Compile Include="c:\\test\\file1.txt%3Bc:\\test2\\file2.txt" /> 
   </ItemGroup>

<Copy SourceFiles="@(Compile)" DestinationFolder="c:\destination\%(RecursiveDir)">
</Copy>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...