Ich verwende XCOPY in einem Post-Build-Ereignis, um kompilierte DLLs aus ihren Ausgabeordnern in den Ausgabeordner der Hauptanwendung zu kopieren. Die DLLs werden wie folgt in einen Unterordner "Module" im Hauptausgabeordner der App kopiert:
xcopy "$(TargetPath)" "$(SolutionDir)Prism4Demo.Shell\$(OutDir)Modules\"
Der Befehl funktioniert einwandfrei, wenn der Ordner "Module" vorhanden ist. Beim Testen habe ich jedoch festgestellt, dass XCOPY ihn nicht erstellt, wenn der Ordner nicht vorhanden ist, und der Befehl fehlschlägt.
Gibt es einen XCOPY-Schalter, mit dem der Ordner erstellt wird, wenn er nicht vorhanden ist? Wenn nicht, was würde ich meinem Post-Build-Ereignis hinzufügen, um den Ordner zu erstellen, wenn er nicht vorhanden ist? Danke für Ihre Hilfe.
xcopy
post-build-event
David Veeneman
quelle
quelle
Antworten:
Ich habe dies in der Kommandozeile mit versucht
und das Zielverzeichnis wurde ordnungsgemäß erstellt.
Wenn nicht, können Sie das Zielverzeichnis mit dem
mkdir
Befehl mitcmd
aktivierten Befehlserweiterungen wie erstellen('/ x' aktiviert Befehlserweiterungen, falls sie auf Ihrem System nicht standardmäßig aktiviert sind. Ich bin damit nicht so vertraut.
cmd
)verwenden
Für weitere Informationen :)
quelle
Die Antwort auf "/ I" funktioniert, aber mit wenig Trick - im Ziel müssen Sie mit dem Zeichen \ enden, um xcopy mitzuteilen, dass das Ziel ein Verzeichnis und keine Datei ist!
Beispiel:
funktioniert nicht und gibt Code 2 zurück, aber dieser:
In meinem Beispiel verwendete Befehlszeilenargumente:
/ F - Zeigt die vollständigen Namen der Quell- und Zieldateien an
/ R - Hiermit werden schreibgeschützte Dateien überschrieben
/ Y - Unterdrückt die Aufforderung, eine oder mehrere vorhandene Dateien zu überschreiben.
/ I - Nimmt an, dass das Ziel ein Verzeichnis ist (muss aber mit \ enden)
quelle
/F
, warum/R
, warum/Y
. In meinem Fall wurde/Y
das Problem gelöst und zukünftige Leser würden davon profitieren zu wissen, warum ohne Data Mining das Internet./I
war nicht erforderlich, um das Verzeichnis bedingt zu erstellen, sondern +1, um den Pfad mit Backslash zu beenden.Ich hasse den PostBuild-Schritt, er erlaubt, dass zu viel außerhalb des Zuständigkeitsbereichs des Build-Tools passiert. Ich glaube, es ist besser, MSBuild den Kopiervorgang verwalten und die Aktualisierung durchführen zu lassen. Sie können die .csproj-Datei folgendermaßen bearbeiten:
quelle
Verwenden Sie das / i mit xcopy. Wenn das Verzeichnis nicht vorhanden ist, wird das Verzeichnis für Sie erstellt.
quelle
Sie könnten Robocopy verwenden:
quelle
Ich habe dies auf dem Befehl versucht. Es funktioniert für mich.
quelle
Einfache kurze Antwort lautet:
quelle
Versuchen Sie / E.
So erhalten Sie eine vollständige Liste der Optionen: xcopy /?
quelle