Richtigen syntax zu kopieren und überschreiben einer Datei in ein post-build event
Was ist der beste Weg, zu kopieren und immer überschreiben Sie eine Datei in das Zielverzeichnis in einem postbuild-Ereignis im VS2010 unter windows 7.
Im moment bin ich mit
robocopy $(SolutionDir) $(TargetDir) "Morning Report Template.xlsm"
Habe ich auch schon versucht mit Xcopy (mit /Y) und auch einfach nur kopieren. Aber ich habe nicht gemacht es funktioniert einwandfrei noch. Entweder bekomme ich build-Fehler wie "Den Befehl "robocopy C:\Working\Projects\SAFEXQueryForm\ C:\Working\Projects\SAFEXQueryForm\SAFEXQueryForm\bin\Release\ "Morning Report-Vorlage.xlsm"" exited with code 1." Oder aber es funktioniert einfach nicht kopieren.
Muss ich es kopieren und überschreiben-jedes mal, ohne ein build-Fehler und ich hätte es auch lieber, um den Dateinamen zu ändern, die ich weiß, Robocopy kann das nicht tun.
Was mache ich falsch? Und was ist der beste Weg, dies zu tun?
Macht nix... gibt es eine andere Einstellung irgendwo?
QUarendon: Wenn ich sauber das erstellen und löschen Sie die Datei dann, dass der code kopiert die Datei. Wenn ich die Datei löschen und erstellen Sie dann aber, es nicht zu kopieren. Wie bekomme ich es immer ausführen?
Ah, ich glaube, ich sehe. Wenn ich das richtig verstehe das problem nichts zu tun mit der COPY-Aktion, eher mit bekommen, visual studio, um tatsächlich die Kopie jedes mal, wenn Sie wählen Sie "build" im Projekt? Das ist, vermutlich, wenn Sie tun, was Sie beschreiben, erhalten Sie eine Meldung, dass das Projekt aktuell ist 00 gar nicht wirklich der build überhaupt, so die "post-build-Ereignis" nicht laufen.
Ja der copy-Aktion funktioniert immer von der Eingabeaufforderung. Also, sagen Sie, dass, wenn Sie drücken Sie F5, oder klicken Sie auf die grüne play-Taste, ein post-build-Ereignis wird nicht unbedingt genannt werden? Warum nicht? Und gibt es alternativen, die Sie kennen? Es auch nicht erklären, warum robocopy gibt mir die Fehlermeldung...
InformationsquelleAutor Dan | 2012-04-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
BEARBEITEN 2015/11/23
Diese Antwort bietet eine bessere Methode: https://stackoverflow.com/a/4596552/1011724. Sie können fügen Sie die Datei dem Projekt, und ändern Sie dann die "Copy to Output Directory" - Eigenschaft der Datei.
Ursprüngliche Antwort
Ich weiß noch nicht, was falsch war mit meinem original-syntax oder zu überzeugen VS, die
Robocopy
's Erfolg exit-code ist 1, aber das ist, was ich jetzt und es scheint zu funktionieren, nur mit dem Unterschied, dass ich änderungen die Verzeichnis-Struktur, aber das sollte keine Rolle spielen(ich fürchte, ich weiß nicht, ob ich andere änderungen vorgenommen, die in der Zwischenzeit, das war schon eine ganze Weile her)und auch habe mir das post-build Ereignis drop-down festgelegt
On successful build
InformationsquelleAutor Dan
Müssen Sie eine benutzerdefinierte build-Aktion zu erreichen. Sehen http://msdn.microsoft.com/en-US/library/hefydhhy(v=vs. 80).aspx für details, aber hier ist was ich versucht habe.
Habe ich den input-Datei in das Projekt. Dann wählen Sie die Datei und zeigen Sie die Seite "Eigenschaften" (Rechte Maustaste -> Eigenschaften). Auf der Seite allgemein stellen Sie sicher, dass die "Element Type" "Custom Build-Tool".
Müssen Sie möglicherweise schließen und erneut öffnen Sie den Eigenschaften-dialog, aber nach dem Wechsel von "Element-Typ" auf "Benutzerdefiniertes Build-Tool" sollte es ein "Benutzerdefiniertes Build-Tool" - Seite in den Eigenschaften-dialog. Sie können dann füllen Sie die Befehlszeile. Stellen Sie sicher, dass Sie füllen Sie die "Output" - Abschnitt mit dem Namen der Datei, unsere benutzerdefinierte build-Schritt generiert.
Sollten Sie dann feststellen, dass das Projekt baut und betreibt die benutzerdefinierte build-Schritt, wenn es feststellt, dass die input-Datei hat ein Datum, die größer als die Ausgabe-Datei, die ich glaube, ist, was Sie versuchen zu erreichen.
Würde ich gerne probieren, aber ich kann nicht scheinen zu finden, die Seite Eigenschaften für eine Datei. (noch die Konfiguration der box im link aufgeführt). Ich mit der rechten Maustaste auf das Projekt und wählen Sie 'vorhandenes Element hinzufügen', wählte die Datei (eine .xlsm). Dann habe ich mit der rechten Maustaste auf die Datei im Projektmappen-explorer und wählte Eigenschaften, aber alles was ich bekomme ist der normale Eigenschaften-explorer wie die, die Sie bekommen, für Steuerelemente in der win form-designer. Nicht finden können, ein 'Element-Typ'. Es ist ein Build Action-drop-down, und ein Benutzerdefiniertes Tool-text-Feld aber. Wo habe ich geirrt?
In den Eigenschaften-dialog für eine normale Datei, auf der linken Seite habe ich einen Baum aus "Konfiguration", "allgemein". Beide "Konfiguration" und "Allgemeinen" link auf der gleichen Seite-Eigenschaft auf der rechten Seite. Es enthält eine Einstellung "Exclude from build", die standardmäßig ist "Nein", und eine Eigenschaft "Item type" standardmäßig "nicht an zu bauen". Was Projekt-Typ haben Sie? Ich arbeite mit Visual C++ - Projekte.
Visual C#, es sei denn, ich bin auf der Suche an der falschen Stelle, ich habe keine "Konfiguration" noch "Allgemeines". Aber auch die robocopy-code oben ist eigentlich zu arbeiten, aber für einige Grund VS ist zu sehen, der exit-code von 1 (was ist robocopy für den Erfolg) als ein Fehler-code, also vielleicht eine benutzerdefinierte build-event ist nicht notwendig, nachdem alle? Müssen nur einen Weg finden, zu überzeugen, VS, robocopy beenden mit 1 ist kein Fehler... die ich habe keine Ahnung, wie zu tun :/
Man kann sicherlich Visual studio tun, die das kopieren für Sie, und wenn Sie es tun, wird dafür sorgen, es muss nur kopiert werden, wenn nötig (ich.e wenn out of date).
InformationsquelleAutor Tom Quarendon