In Ihrem Link gibt es ein Attribut "SkipUnchangedFiles". Fügen Sie das zur Kopieraufgabe hinzu und setzen Sie es auf "wahr".
<Copy SourceFiles="@(Packages)" DestinationFolder="\\server\nuget\packages\" SkipUnchangedFiles="true" />
EDIT: stelle ich mit dem folgenden ein Beispielprojekt auf.
<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>
Ordner + Datei Taxonomie ist:
src\
doc1.txt
doc2.txt
doc3.txt
doc4.txt
doc5.txt
doc6.txt
dest\
doc2.txt
doc4.txt
doc6.txt
CopyNew.proj
Als ich msbuild.exe CopyNew.proj
laufen, bekomme ich die folgende Ausgabe:
Build:
PackagesToCopy src\doc1.txt;src\doc3.txt;src\doc5.txt
So, jetzt @ (Packages) enthält nicht mehr die Dateien, die im Zielordner vorhanden!
Ah! Mit "Ich möchte nur neuere Dateien" ging ich davon aus, dass wir nach Datumsstempeln suchen, aber Sie möchten, dass die Kopie nur dann erfolgt, wenn die Zieldatei noch nicht existiert? – Nicodemeus