如何将多个文件复制到同一目录而不在MSBuild中重写
我在不同的目录中有多个CodeCoverage.xml文件,我想用新名称将它们复制到一个目录中,这样它们就不会被覆盖如何将多个文件复制到同一目录而不在MSBuild中重写,msbuild,copy,unique,Msbuild,Copy,Unique,我在不同的目录中有多个CodeCoverage.xml文件,我想用新名称将它们复制到一个目录中,这样它们就不会被覆盖 <ItemGroup> <CoverageResultsXmlFiles Include="$(TestResultsDir)\**\CodeCoverage.xml" /> </ItemGroup> 有人知道如何将这些文件复制到$(TestResultsDir)而不被覆盖吗 是否有一种方法可以生成一个随机数,该随机数可以预先
<ItemGroup>
<CoverageResultsXmlFiles Include="$(TestResultsDir)\**\CodeCoverage.xml" />
</ItemGroup>
有人知道如何将这些文件复制到$(TestResultsDir)而不被覆盖吗
是否有一种方法可以生成一个随机数,该随机数可以预先挂起到文件名上,以便它们是唯一的?您可以使用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>
$(RecursiveDir.Replace(“,”))
$(DirIdentity.Replace(“\”,“\”))
$([System.IO.Path]::GetRandomFileName())
$(DestinationDir)\$(DirIdentity)\u$(UniqueIdentity)\u CodeCoverage.xml
@Sayed Ibrahim Hashimi在属性函数和使用静态.Net方法方面非常优秀。因此,您可以实现任何您想要的命名算法