Ich habe einen VS2008, den ich bestimmte Dateien aus einem Verzeichnis in meinen /bin/
Ordner kopieren möchte . Ich habe die Dateien (in /common/browserhawk/
) auf "In Ausgabeverzeichnis kopieren" gesetzt. Es wird jedoch auch die Ordnerstruktur kopiert: Die Dateien werden in kopiert/bin/common/browserhawk/
Wie bekomme ich diese Dateien zum Kopieren /bin/
? Ich möchte diese nicht im Stammverzeichnis der Website speichern, damit sie korrekt kopiert werden.
Verwandte Frage: Visual Studio fügt dem Projekt nach dem Kompilieren .dll und .pdb hinzu
quelle
xcopy /s /d /y "$(ProjectDir)\stuff" "$(TargetDir)\stuff"
Da ich frühere Antworten nicht kommentieren kann, werde ich die Lösung hier einfügen:
Fügen Sie Ihrer .csproj / .vbproj-Datei Folgendes hinzu, um @PaulAlexander bereitzustellen:
Auf diese Weise können Sie "RootContent" als Build-Aktion im Eigenschaftenfenster auswählen und auf alle kann über die GUI zugegriffen werden. Eine ausführlichere Erklärung: Mit der Option "AvailableItemName" wird im Wesentlichen eine neue Namensliste erstellt, der Sie Elemente im Projekt unter der Eigenschaft "Build Action" im Eigenschaftenfenster zuweisen können. Sie können diese neu erstellte Liste dann in einem beliebigen Ziel verwenden (z. B. über "@ (RootContent)").
quelle
AvailableItemName
ein ungültiges Element beschwert , wenn Sie die Projektdatei in VS bearbeiten. Ignorieren Sie einfach die Warnung, es funktioniert trotzdem.<Target Name="RootOutputCopyTarget" AfterTargets="Build">
... </ Target>Wenn Sie .csproj / .vbproj in einem Texteditor bearbeiten, können Sie steuern, wo die Datei im Ausgabeverzeichnis abgelegt wird und welchen Namen die Datei im Ausgabeverzeichnis hat. Beispielsweise:
Dies legen Sie die Datei
content\someContent.txt
inbin\someContentInOutputDirectory.txt
. Sie können auch ein Unterverzeichnis in auswählen,bin
wenn Sie möchten. Fügen Sie es einfach dem Link-Element hinzu.quelle
Ich glaube, der XCOPY-Befehl verarbeitet Verzeichnisse und Dateien besser. Deshalb,
Dies ermöglicht das Erstellen von Ordnern außerhalb des Zielverzeichnisses.
Die Projektordner- / Dateistruktur von:
Wird:
quelle
/D
kann auch nützlich sein, um ein Überschreiben möglicher Änderungen zu vermeiden.Fügen Sie Ihrer .csproj / .vbproj-Datei Folgendes hinzu
Ändern Sie dann die Build-Aktion aller gewünschten Dateien im Stammordner in RootContent.
quelle
RootContent
es leider nicht in der Dropdown-Liste "Build Action" angezeigt. Wenn Sie es manuell eingeben, wird in Visual Studio der Fehler "Eigenschaftswert ist ungültig" angezeigt. Was habe ich verpasst?Ich habe dies in VS2010, VS2015, VS2017 und VS2019 verwendet. Ich bevorzuge diese Lösung, weil:
Gegen Anfang der Projektdatei:
Aus dieser Antwort entlehnt
Nach dem Microsoft .targets-Import:
Aus dieser Antwort entlehnt
quelle
RootContent
was "hartcodiert" impliziert,CustomContent
um anzuzeigen, dass dies spezialisierter Inhalt ist, den wir diesem Projekt hinzufügen und den wir auf diese spezielle Weise kopieren müssen. Nebenbei musste ichTargetPath=%(RecursiveDir)%(Filename)%(Extension)
die Ordnerstruktur von den angegebenenCustomContent
Dateien zum Ausgabepfad neu erstellen ./common/browserhawk/
kopiert werden,/bin/common/browserhawk/
wie im OP angegeben? IIRC, meine Absicht war es, in zu/common/browserhawk/a.txt
landen,/bin/a.txt
aber eine Rekursion von dort nach unten zuzulassen, also/common/browserhawk/secret/stuff.png
endet in/bin/secret/stuff.png
.%(RecursiveDirectory)
. Das ist wirklich cool, denn neben der Auswahl einzelner Dateien in der IDE können Sie auch mehrere Dateien mit Platzhaltern angeben. Bei Verwendung der**
Platzhalters bleibt die gesamte Ordnerstruktur erhalten.Am Ende habe ich der Nant-Build-Datei einen Schritt hinzugefügt, der nach erfolgreicher Kompatibilität kopiert werden soll
quelle
Sie können eine Batchdatei erstellen, um die Dateien zu kopieren und als Ereignis nach dem Erstellen auszuführen.
quelle