2011-03-08 10 views
0

複数のCodeCoverage.xmlファイルが別々のディレクトリにあり、それらを上書きしないように単一のディレクトリに新しい名前でコピーしたいとします。MSBuildで上書きせずに複数のファイルを同じディレクトリにコピーする方法

<ItemGroup> 
    <CoverageResultsXmlFiles Include="$(TestResultsDir)\**\CodeCoverage.xml" /> 
</ItemGroup> 

誰もが彼らが上書きされずに$(TestResultsDir)にこれらのファイルをコピーする方法のアイデアを持っていますか?

ファイル名にあらかじめペンディングされている可能性のある乱数を生成する方法はありますか?

答えて

0

あなたはMSBuildの4.0の機能でそれを行うことができます。

<Target Name="CopyCodeCoverage"> 
     <PropertyGroup> 
      <DirIdentity>$(RecursiveDir.Replace(" ", "_"))</DirIdentity> 
      <DirIdentity>$(DirIdentity.Replace("\", "_"))</DirIdentity> 
      <UniqueIdentity>$([System.IO.Path]::GetRandomFileName())</UniqueIdentity> 
      <DestCodeCoverage>$(DestinationDir)\$(DirIdentity)_$(UniqueIdentity)_CodeCoverage.xml</DestCodeCoverage> 
     </PropertyGroup> 
     <Copy SourceFiles="$(CodeCoverageFullPath)" 
      DestinationFiles="$(DestCodeCoverage)" 
      SkipUnchangedFiles="true" /> 
    </Target> 

    <Target Name="ProcessResults"> 
      <MSBuild Projects="$(MSBuildProjectFullPath)" 
        Targets="CopyCodeCoverage" 
        Properties="CodeCoverageFullPath=%(CoverageResultsXmlFiles.FullPath);RecursiveDir=%(CoverageResultsXmlFiles.RecursiveDir);DestinationDir=$(TestResultsDir)" /> 
    </Target> 

@SayedイブラヒムHashimiは、プロパティ関数についてpost優れており、使用して静的ネットメソッドを持っています。したがって、必要な命名アルゴリズムを実装することができます。

関連する問題