visual-studio windows - Visual Studio Post-Build-Ereignis-Kopieren in den relativen Verzeichnisspeicherort




title changer (5)

Wäre es nicht sinnvoll, msbuild direkt zu verwenden? Wenn Sie dies mit jedem Build tun, können Sie am Ende eine Msbuild-Aufgabe hinzufügen? Wenn Sie nur sehen möchten, ob Sie einen anderen Makrowert nicht finden können, der nicht in der Visual Studio IDE angezeigt wird, können Sie die Msbuild-Optionen für die Diagnose aktivieren und Ihnen alle Variablen anzeigen, die Sie verwenden könnten genau wie ihr aktueller Wert.

Um dies in Visual Studio einzuschalten, gehen Sie zu Extras / Optionen, scrollen Sie dann in der Baumansicht zu dem Abschnitt Projekte und Lösungen, erweitern Sie das und klicken Sie auf Erstellen und Ausführen, auf der rechten Seite ist ein Drop-down, das die Ausführlichkeit der Build-Ausgabe angibt Wenn Sie das auf diagnostic einstellen, wird Ihnen angezeigt, welche anderen Makrowerte Sie verwenden könnten.

Weil ich nicht genau weiß, auf welcher Ebene Sie gerne gehen würden und wie komplex Ihr Build sein soll, könnte Ihnen das eine Idee geben. Ich habe kürzlich Build-Skripte gemacht, die sogar SQL-Code als Teil des Builds ausführen. Wenn Sie weitere Hilfe oder sogar einige Beispiel-Build-Skripte benötigen, lassen Sie es mich wissen, aber wenn es nur ein kleiner Prozess ist, den Sie am Ende des Builds ausführen möchten, ist das vollständige Skript msbuild möglicherweise ein bisschen überkillt .

Hoffe es hilft Rihan

Bei einem erfolgreichen Build möchte ich den Inhalt des Ausgabeverzeichnisses an einen anderen Speicherort im selben "Basis" -Ordner kopieren. Dieser übergeordnete Ordner ist ein relativer Teil und kann basierend auf den Einstellungen der Quellcodeverwaltung variieren.

Ich habe einige der für mich verfügbaren Macro-Werte aufgelistet ...

$ (SolutionDir) = D: \ GlobalDir \ Version \ AppName \ Solution1 \ Build

$ (ProjectDir) = D: \ GlobalDir \ Version \ AppName \ Lösung1 \ Version \ ProjectA \

Ich möchte den Inhalt des Ausgabeverzeichnisses in den folgenden Ordner kopieren:

D: \ GlobalDir \ Version \ AppName \ Solution2 \ Projekt \ Abhängigkeit

Der Basisspeicherort "D: \ GlobalDir \ Version \ AppName" muss aus einem der obigen Makros abgerufen werden. Keiner der Makrowerte listet jedoch nur den übergeordneten Speicherort auf.

Wie extrahiere ich nur den Basisstandort für den Kopierbefehl nach dem Build?


Hier ist, was Sie in die Befehlszeile des Projekts nach dem Build einfügen möchten:

copy /Y "$(TargetDir)$(ProjectName).dll" "$(SolutionDir)lib\$(ProjectName).dll"

BEARBEITEN: Oder wenn Ihr Zielname sich von dem Projektnamen unterscheidet.

copy /Y "$(TargetDir)$(TargetName).dll" "$(SolutionDir)lib\$(TargetName).dll"

Ich denke, das ist verwandt, aber ich hatte ein Problem beim direkten msbuild von msbuild Befehlszeile (aus einer Batch-Datei) vs msbuild von innerhalb von VS.

Verwenden Sie etwas wie folgt:

<PostBuildEvent>
  MOVE /Y "$(TargetDir)something.file1" "$(ProjectDir)something.file1"
  start XCOPY /Y /R "$(SolutionDir)SomeConsoleApp\bin\$(ConfigurationName)\*" "$(ProjectDir)App_Data\Consoles\SomeConsoleApp\"
</PostBuildEvent>

(Hinweis: start XCOPY anstelle von XCOPY , um ein Problem start XCOPY XCOPY , das das Kopieren verhindert hat)

Das Makro $(SolutionDir) bei der Ausführung von Msbuild aus einer Batchdatei auf ..\ evaluiert, was dazu führte, dass der XCOPY Befehl fehlschlug. Ansonsten funktionierte es gut, wenn es in Visual Studio erstellt wurde. Bestätigt mit /verbosity:diagnostic , um die ausgewertete Ausgabe zu sehen.

Die Verwendung des Makros $(ProjectDir)..\ , das auf dasselbe hinausläuft, funktionierte gut und behielt den vollständigen Pfad in beiden Build-Szenarien bei.


Du könntest es versuchen:

$(SolutionDir)\..\..\

In Visual Studio 2013 konnte ich "In Projekt einbeziehen" nicht ausführen, wenn ich mit der rechten Maustaste auf einen Ordner klicke. Was hat Arbeit ausgedehnt, den Ordner zu erweitern, alle Dateien auswählend, dann wählend "Einbinden in Projekt". Es war ziemlich mühsam, da Sie jeden Ordner einzeln ausführen müssen (aber Sie können alle Dateien in jedem Ordner auf einmal erledigen), und es scheint den Dateipfad zu speichern (Sie können dies sehen, indem Sie Eigenschaften in der Datei anzeigen und schau auf die Option "Relativer Pfad".)

Ich hoffe, dies zu verwenden, um einige Datendateien in einem Visual Studio Installer-Projekt bereitzustellen, und es scheint, die enthaltenen Dateien aufzunehmen und ihre Pfade beizubehalten.





visual-studio visual-studio-2008 post-build-event