Frage

Ich möchte einen Beitrag Buildereignis implementieren, die die folgenden Aktionen ausführt

  1. Eine relative Pfad Kopie des DLL-Ausgangs (1 Datei, nicht all Debug-Jazz)
  2. A die Ausgabe DLL zu GAC registrieren

Wie wird das gemacht?

War es hilfreich?

Lösung

Hat das wollen Sie?

copy $(TargetPath) $(TargetDir)..\..\someFolder\myoutput.dll
regasm $(TargetPath) 

(Eingetragen in das Feld für Post-Build-Schritt unter Projekteigenschaften)

Andere Tipps

Geben Sie

folgende in "Projekt Eigenschaften-> Build veranstaltungen-> Post baut Ereignisse Befehlszeile ein:"

xcopy "$(TargetPath)" "target path" /Y && regasm "$(TargetPath)"

oder fügen Sie folgenden Code-Schnipsel zu Projekt (z csproj Datei)

<PropertyGroup>
    <PostBuildEvent>xcopy "$(TargetPath)" "target path" /Y && regasm "$(TargetPath)"</PostBuildEvent>
</PropertyGroup>

Beachten Sie, dass es empfehlenswert ist hinzuzufügen „“ kopieren um Befehlsargumente Probleme mit Pfaden enthalten Leerzeichen zu vermeiden. Beachten Sie auch, dass mehrere Befehle kombiniert werden können unter Verwendung von &&

Sind Sie sicher, dass Sie dies als Teil einer Kompilierung zu tun? Ich würde mit Projektreferenzen in Lösungen statt der GAC empfehlen, wenn Sie es vermeiden können. Das Kopieren von Dateien ist eine Sache, aber im GAC Registrierung ist ziemlich aufdringlich und Sie können die anderen Umgebungen Code betrachten möchte. Dinge wie andere Entwickler Maschinen kompiliert wird, und Testumgebungen / Build-Server usw. Wenn Sie einen Build-Server eigentlich sollte man so etwas wie NAnt mit irgendeiner Art von Continuous Integration Server verwenden.

musste ich gleiches Problem und ich kämpfte ein bisschen funktioniert es zu machen.

In meinem Fall wollte ich um die andere Art und Weise tun, , das ist das Kopieren des SDL in meine Ausgabeordner dll.

copy "$(SolutionDir)SDL\lib\x86\SDL.dll" "$(SolutionDir)$(Configuration)\"

Beachten Sie, dass, $(Configuration) Ihre Ausgabeordner (z Debug oder Release) sein.

Die Zitate waren, was ich fehlte, anscheinend man sie braucht, wenn die rechte Seite mit einem \ beenden. So könnte es sicherer, immer, sie zu nutzen.

Hope jemand anderes 5 Minuten zu retten!

P. S. Ich benutze Visual Studio 2010

Sie können beim Aufbau bei MS suchen. Sein, was wir verwenden hier bei der Arbeit.

Codeproject Link- & MSDN Ref

Für Schritt 2 in der Frage, die ich scheinen die folgenden bevorzugen:

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gacutil" /f /i $(TargetPath)

Hinweis: Dies erfordert die Windows SDK auf Ihrer Entwicklungsmaschine installiert werden.

Weitere Informationen über die verfügbaren Makros, wie wie $ (TargetPath) auf MSDN.

Läuft in ein ähnliches Problem. Die Antworten hier geholfen (danke!).

Mein Szenario war eine MEF-angewiesen-Anwendung in dem Debuggen ich den entsprechenden DLLs in einem bestimmten Ort zu haben, benötigt. Ich lief in Frage mit der vorherige Build Überschreiben so mußten eine Lösch an das Skript hinzuzufügen.

delete $(SolutionDir)FileService\$(ProjectName).dll
copy $(TargetPath) $(SolutionDir)FileService\$(ProjectName).dll

Hoffnung, dass jemand hilft, auch!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top