我在单独的目录中有多个CodeCoverage.xml文件,我想将它们复制到一个具有新名称的目录,以便它们不会被覆盖。
<ItemGroup>
<CoverageResultsXmlFiles Include="$(TestResultsDir)\**\CodeCoverage.xml" />
</ItemGroup>
有没有人知道如何将这些文件复制到$(TestResultsDir)而不会被覆盖?
有没有办法生成一个可以预先添加到文件名的随机数,这样它们就是唯一的?
答案 0 :(得分: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 Ibrahim Hashimi对于属性函数和使用静态.Net方法有很好的post。因此,您可以实现所需的任何命名算法。