Warum tun alle Pre-build und Post-build-Ereignisse in Visual Studio fehl mit exit-code 1?
Mein Ziel ist es zu kopieren .exe-Datei aus einer bin-Ordner von Lösung A zu anderen Lösungen B Ressource-Ordner auf den post-build-Ereignis der Lösung A.
Ich habe die notwendigen xcopy-Befehl und versuchte es in powershell: Es funktioniert perfekt.
Immer, wenn ich hinzufügen Befehl, um die Aktionen in VS-build schlägt fehl mit: "#Befehl# exited with code 1", wo #command# ist, zum Beispiel, den xcopy-Befehl.
Ich habe versucht mit VS als admin und aktuell habe ich versucht nur mit einem .bat-Datei, enthält "@echo off @exit 0". Das auch dazu führt, "#Befehl# exited with code 1".
Einige Beispiel von dem, was ich ausprobiert habe als VS post-/pre-build-Befehl:
rufen Sie "projdir\test.Fledermaus"
rufen Sie projdir\test.Fledermaus
"projdir\test.Fledermaus"
projdir\test.Fledermaus
... ich habe versucht, projdir als "$(ProjectPath)" und manuellen Weg.
Lege ich die Ausgabe auf "verbose" und Folgendes gefunden:
Der Befehl "C:\Users\Traubenfuchs\AppData\Local\Temp" ist falsch geschrieben oder konnte nicht gefunden werden. (Dass der Ordner wirklich existiert, aber ich weiß nicht, was es will, es zu tun.)
Das gleiche passiert, wenn ich einen xcopy-Befehl in pre/post-build.
Weiß jemand, was ich falsch mache?
- als administrator ausführen mein Problem gelöst
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kürzlich traf ich ähnliches problem.
Über Ihre "hello world" post-build-Ereignis :
versuchen, rufen Sie die powershell direkt
=================
Meine pre-build-event sieht wie folgt aus :
Meine scriptPath.ps1 aussieht :
Beachten Sie, dass ohne "exit 0" am Ende bekam ich return code 1 aus meinem Skript.
Hatten wir dieses Problem, weil ein "Software Restriction Policy" eingerichtet, in der ein Domänen-GRUPPENRICHTLINIENOBJEKT. Es scheint, dass pre-und post-builds erstellen .cmd-batch-Datei im temp-Ordner. Hier ist, was die Protokollierung zeigte mir:
Um dies zu beheben modifizieren wir die GPO gesteuert wird der SRP, so dass es nicht zählen .cmd-Dateien. Nachdem alle das Ziel des SRP ist das blockieren von ausführbaren malware, keine batch-Dateien. Ich darf Sie einige Sicherheits-blowback, weil dieser. Ich hoffe, jemand weiß einen besseren Weg, um dieses Problem zu beheben.
Ein mögliches Problem ist, dass
$(ProjectDir)
statt$(ProjectPath)
Wenn Sie
$(ProjectPath)
es eigentlich ist:"C:\Users\....\Project\MyProject.csproj"
Versus
$(ProjectDir)
ist:"C:\Users\....\Project\"
Beachten Sie, dass die erste version ist eigentlich auf Ihre Projekt-Lösung-Datei... das würde alles scheitern.
Andere ist, dass
$(ProjectDir)
fügt automatisch die trailing slash an den Pfad. also"$(ProjectDir)\test.bat"
wäre eigentlich zu übersetzen: "C:\Users....\Project\test.bat"Auch Sie haben, um sicherzustellen, dass Sie umschließen alle Ihre Datei Pfade in doppelten Anführungszeichen
So der korrekte Aufruf würde wie folgt Aussehen:
Andere Dinge zu überprüfen wäre, um sicherzustellen, dass das Verzeichnis, das das Skript ausgeführt wird, korrekt ist. Siehe SO: visual studio 2012, postbuild-Ereignis, bat-Datei erstellt keine neue Datei (nicht ausgeführt)
Haben Sie überprüft, die Anregungen in diesem StackOverflow? Post-Build beendet mit code 1
Bearbeiten
Versuchen Sie dies:
Musst du am Ende alle Befehle, die mit
@exit 0
sonst nicht denken, dass es fertig richtig@exit 0
zum Ende Ihres Kommandos (siehe edit) ansonsten wird er immer denken, dass etwas falsch gelaufen ist.ECHO|SET /P="My final line without a CR">> "$(ProjectDir)myfile.vb" @EXIT 0
für mich gearbeitet.