Im msbuild Skript unten, führen Sie das erste Mal, dass ich die csproject folgende Ziele in der Reihenfolge ausgeführt werden soll:Mit Kopieraufgabe mit unzip Aufgabe in msbuild
1) UnzipDLL
2) DeleteExtraneousDirs
Wenn ich
1) UnzipDLL
2) Copyfiles
3) DeleteExtraneousDirs
Ich bin mir nicht sicher, warum das Ziel "CopyFiles" nicht das erste Mal ausgeführt wird. Ich habe auch versucht, die Zielaufträge durch Hinzufügen von "BeforeTargets", "AfterTargets" und/oder "DependsOnTargets" anzugeben, aber das CopyFiles-Ziel wurde nicht nach dem UnzipDLL-Ziel ausgeführt.
Wenn ich die DefaultTargets nur als "UnzipDLL" und "CopyFiles" angeben, wird nur der Task "UnzipDLL" ausgeführt, wenn ich das csproject-Projekt zum ersten Mal ausführe und beide Tasks "UnzipDLL" und "CopyFiles" zum zweiten Mal ausgeführt werden Die csporjects werden ausgeführt.
Unten ist das Msbuild-Skript. Danke für die Hilfe!
<Project ToolsVersion="14.0" DefaultTargets="UnzipDLL;CopyFiles;DeleteExtraneousDirs" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ReleasePath>..\..\..\..\..\TDS</ReleasePath>
<RelDirectory>$(ReleasePath)\exe\dll\_rels</RelDirectory>
<LibDirectory>$(ReleasePath)\exe\dll\lib</LibDirectory>
</PropertyGroup>
<ItemGroup>
<LibFiles Include="$(ReleasePath)\exe\dll\lib\**\*.*;$(ReleasePath)\exe\dll\lib\*.*" />
</ItemGroup>
<Target Name="UnzipDLL">
<Unzip ZipFileName="$(ReleasePath)\exe\utils\TDS.Packages.1.0.0.nupkg"
TargetDirectory="$(ReleasePath)\exe\dll\" />
</Target>
<Target Name="CopyFiles">
<Copy SourceFiles="@(LibFiles)" DestinationFolder="$(ReleasePath)\exe\dll\%(RecursiveDir)" />
</Target>
<Target Name="DeleteExtraneousDirs">
<Delete Files="@(LibFiles)" />
<RemoveDir Directories="$(RelDirectory);$(LibDirectory)" />
</Target>
</Project>
UPDATE
Um SergeyL der Punkt, wird das Ziel ausgeführt Copyfiles erhalten. Die Kopieraufgabe kopiert jedoch nicht die Dateien aus dem Ordner "exe \ dll \ lib" in den Ordner "exe \ dll \". Ich habe das herausgefunden, indem ich Nachrichtentasks vor und nach der Kopieraufgabe hinzugefügt habe.
Woher wissen Sie, dass das CopyFiles-Ziel nicht ausgeführt wird? Hast du das Bauprotokoll? Sie können verwenden, um explizit zu protokollieren, dass ein Ziel ausgeführt wurde. –
Kühl. Wusste nicht, dass ich die Nachricht dazu benutzen könnte. Wird herausfinden, wie das geht. Zwei Möglichkeiten, die ich kenne: 1) Lib-Dateien wurden nicht in den DLL-Ordner kopiert. 2) Ich sehe die Kopie nicht im Msbuild-Befehlsfenster. – rds80