2010-12-01 8 views
14

Ich habe ein MVC-Projekt und ich möchte seine Ausgabe teilen.VS 2010. Post-Build. Kopieren Sie Dateien in mehrere Verzeichnisse/mehrere Ausgabepfad

Ich möchte alle DLL-Dateien dieses Projekts (alle Inhalte aus dem Verzeichnis Bin) in ein Verzeichnis und alle Ansichten (Inhalt des Verzeichnisses View) in ein anderes Ausgabeverzeichnis kopieren.

Einstellungen des Projekts in VS 2010 erlaubt mir nicht, das einfach zu tun.

Ich kann nur einen Ausgabepfad in den Einstellungen angeben und ich kann nicht angeben, welche Verzeichnisse oder Dateitypen und wo kopiert werden sollen.

Ich denke, dass ich das Ausgabeverzeichnis auf den Standard verlassen sollte und dann muss ich die Ausgabe wie die Art, die ich möchte mit Post-Build-Befehl teilen.

Vielleicht hat jemand etwas Ähnliches gemacht und irgendwelche Ideen, wie man es am besten macht?

+0

Nachdem die Dateien im Ausgabeordner erstellt wurden, können die verschiedenen Arten von Feldern leicht durch ihre Endung unterschieden werden? –

Antwort

20

Die Lösung ist

1) Stellen Sie Ausgabepfad zum Verzeichnis, wo Sie Ihre * DLL-Dateien in Projekteigenschaften

2) Unter Verwendung von Post-Build-Ereignis kopieren möchten den Inhalt des Verzeichnisses anzeigen kopieren was auch immer gewünschte Verzeichnis

in meinem Fall

1) Ausgabepfad i

gesetzt

.. \ MyDestinationProjectName \ Bin \

2) Post-Build-Ereignis anzeigen Verzeichnis

xcopy "$ (ProjectDir) \ Views" „$ (SolutionDir) \ MyDestinationProjectName \ Plugins \ Ansichten wie folgt aussieht

kopieren \ $ (ProjectName) \ "/ s/i/y

+1

'/ I' Parameter löste mein Fehlerproblem, das auftritt, wenn eine Datei bereits im Ziel existiert –

+1

Von einem Standardprojekt wollte ich die kompilierte ausführbare Datei in einen Zielordner kopieren.Mein Post-Build-Ereignis cmd war 'xcopy '$ (SolutionDir) $ (Konfiguration) \ $ (TargetName) $ (TargetExt)" "C: \ MyOutputFolder"/s/i/y', falls es irgendjemandem da draußen hilft . Sehr hilfreich! – caiosm1005

+0

/I - Als Verzeichnis behandeln, wenn mehrere Dateien kopiert werden /Q - Zeigt die zu kopierenden Dateien nicht an. /S - Kopieren Sie die Unterverzeichnisse, sofern sie nicht leer sind. /D - Kopieren Sie leere Unterverzeichnisse. /Y - Sie werden nicht zum Überschreiben vorhandener Dateien aufgefordert. /R - Schreibgeschützte Dateien überschreiben. –

3

Dies sollte ein Kommentar zu @ caiosm1005 sein, aber mir fehlen Punkte. Wie von @Riapp angezeigt, verwenden Sie den Befehl xcopy. Eine detaillierte Erläuterung der Schalter finden Sie hier Xcopy and Xcopy32 Switches

Meine Lösung war: xcopy "$(TargetDir)$(TargetFileName)" "C:\Mydestination" /s /i /y

Die TargetDir enthielt den vollständigen Pfad zu der kompilierte Datei und die TargetFileName ist die Kombination von TargetName und TargetExt. Fügen Sie kein Backslash-Trennzeichen nach einer Verzeichnisvariablen ein, z. $(TargetDir)\$(TargetFileName) schlägt fehl, weil es als "TargetName**\\** TargetExt" interpretiert wird.

Sobald Sie die Werte in den Makros betrachten, sollte es einfach zu wählen sein, was Sie wollen. Denken Sie daran, dass Sie dies für jedes Projekt in Ihrer Lösung tun müssen. Die Build-Ereignisse können gefunden werden, indem Sie mit der rechten Maustaste auf das Projekt klicken, Eigenschaften auswählen und dann die Registerkarte Build Events auswählen.

+0

Danke. Ich habe bessere Möglichkeiten gefunden, dies zu tun, nachdem ich diesen Kommentar gemacht habe. Das ist der Weg! – caiosm1005

Verwandte Themen