查看复制任务的文档,我没有看到复制文件的明显方法,而不会覆盖目标上的现有文件.我只想复制新文件.
到目前为止我所拥有的:
<ItemGroup>
<Packages Include=".nuget-publish\*.*" />
</ItemGroup>
<Copy SourceFiles="@(Packages)" DestinationFolder="\\server\nuget\packages\" />
Run Code Online (Sandbox Code Playgroud)
条件属性可用于过滤源文件:
<Copy SourceFiles="@(SourceFiles)" DestinationFiles="$(DestinationPath)%(RecursiveDir)%(Filename)%(Extension)" Condition="!Exists('$(DestinationPath)%(RecursiveDir)%(Filename)%(Extension)')" />
Run Code Online (Sandbox Code Playgroud)
在您的链接中有一个属性"SkipUnchangedFiles".将其添加到复制任务并将其设置为"true".
<Copy SourceFiles="@(Packages)" DestinationFolder="\\server\nuget\packages\" SkipUnchangedFiles="true" />
Run Code Online (Sandbox Code Playgroud)
编辑:我用以下内容设置了一个示例项目.
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ExistingPackages Include="dest\*.*" />
<Packages Include="src\*.*" Exclude="@(ExistingPackages -> 'src\%(FileName)%(Extension)')" />
</ItemGroup>
<Target Name="Build">
<Message Text="PackagesToCopy @(Packages)" Importance="high" />
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
文件夹+文件分类是:
src\
doc1.txt
doc2.txt
doc3.txt
doc4.txt
doc5.txt
doc6.txt
dest\
doc2.txt
doc4.txt
doc6.txt
CopyNew.proj
Run Code Online (Sandbox Code Playgroud)
当我运行时msbuild.exe CopyNew.proj,我得到以下输出:
Build:
PackagesToCopy src\doc1.txt;src\doc3.txt;src\doc5.txt
Run Code Online (Sandbox Code Playgroud)
所以现在@(Packages)不再包含目标文件夹中存在的文件!
| 归档时间: |
|
| 查看次数: |
3846 次 |
| 最近记录: |