Laden...

Problem bei Postbuild mit xcopy

Erstellt von csOffroad vor 12 Jahren Letzter Beitrag vor 12 Jahren 3.676 Views
C
csOffroad Themenstarter:in
64 Beiträge seit 2009
vor 12 Jahren
Problem bei Postbuild mit xcopy

Hallo Community,

Meine Solution hat folgenden Aufbau (Auszug):

  • Projekt "Presentation"
  • Projekt "Business"

Projekt "Presentation" hat einen Verweis auf Projekt "Business".

Im Projekt "Business" befindet sich ein Ordner "Lib", dessen Inhalt beim Build der Solution in das Ausgabeverzeichnis des Projekts "Presentation" kopiert werden soll. Dies möchte ich per Postbuildereignis im Projekt "Presentation" machen, deshalb ist dort eingetragen:

xcopy "$(SolutionDir)Business\Lib" "$(TargetDir)Kernel" /Y /E /I /H /R

Folgendes Phänomen tritt auf:
Ist der Zielordner (Presentation\bin\Debug bei Debug-Modus bzw. Presentation\bin\Release bei Release-Modus) schon vorhanden, wird der Build meist abgebrochen mit der Fehlermeldung> Fehlermeldung:

Der Befehl "xcopy "D:...\Business\Lib" "D:...\Presentation\bin\Debug\Kernel" /Y /E /I /H /R" wurde mit dem Code 4 beendet.

Starte ich direkt danach nochmal den Build, läuft er dann ab und zu durch. Will er garnicht, stelle ich den Build-Modus um (damit VS kein Handle auf den Zielordner hat) und lösche den Zielordner Debug bzw. Release, dann stelle ich den Build-Modus wieder zurück. Danach funktioniert der Build immer.

Kann mir jemand helfen? - Danke!

G
538 Beiträge seit 2008
vor 12 Jahren

Stell einfach deinen Ordner Lib auf "Copy to output" und er kopiert es automatisch für dich beim Build

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

C
csOffroad Themenstarter:in
64 Beiträge seit 2009
vor 12 Jahren

Hallo Grumbler85,

meines Wissens kann ich nur die Einstellung von einzelnen Dateien auf "copy to output" stellen - die Ordnerstruktur wird dann mitkopiert, klar. Das Ganze allerdings in den Zielordner des Business-Projektes.

Wie du an meinem Beispiel siehst möchte ich nicht nur den Ordner ins Zielverzeichnis des Presentation-Projektes kopieren, sondern auch die Ordnerstruktur ändern. Sprich alles was vorher im Business in Lib war ist jetzt in Presentation in Kernel.

G
538 Beiträge seit 2008
vor 12 Jahren

Du könntest deine POSTBuild ja dann nen Move machen lassen - aber egal ...

Hast du die Build Reihenfolge geprüft? Die lib sollte zuerst dran sein.
Hast du den xCopy ErrorCode mal gegoogelt? Das könnte aufschluss über das Problem geben.

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

C
csOffroad Themenstarter:in
64 Beiträge seit 2009
vor 12 Jahren

Die Build-Reihenfolge wird von VS festgelegt: Zuerst Business, dann Presentation, da ja Presentation von Business abhängig ist.
Das hat aber meiner Meinung nach nichts mit der Reihenfolge selber zu tun, da ich ja Ordner/Dateien 1:1 kopiere, die nicht kompiliert werden.

Microsoft sagt zu dem Code 4-Fehler:

Initialization error occurred. There is not enough memory or disk space, or you entered an invalid drive name or invalid syntax on the command line. Siehe hier

Das macht aber keinen Sinn! Wieso funktioniert meist beim zweiten Mal der Build normal? Sieht irgendwie so aus, als ob entweder der Zielordner noch nicht existiert oder dass VS noch ein Handle drauf hat. Kann ich mir aber nicht vorstellen, da ich ja extra schon den POSTBuild nutze.

G
538 Beiträge seit 2008
vor 12 Jahren

Ist vielleicht im Ordner "Kernel" schon was drin, was nicht überschrieben werden kann?

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

C
csOffroad Themenstarter:in
64 Beiträge seit 2009
vor 12 Jahren

Der Ordner "Kernel" soll beim Build erstellt werden. Wurde einmal gebuildet, besteht der Ordner, klar.
In den Ordner "Kernel" kopiere ich ein paar .dll's, die meine Projekte nutzen. Sobald ich also die Konfiguration auf "Debug" setze, macht VS gleich einen Batzen Handles auf die dll's auf und sperrt sich somit wahrscheinlich selber. Ich dachte aber immer, dass VS beim Build die Handles vom Zielordner nimmt, um dort wieder reinkompilieren zu können - ist das nicht so?