2012-05-28 3 views
26

Ich möchte ein NuGet-Paket erstellen, das während der Installation eine .cs-Datei (eine Basisklasse, die der Paketkonsument später ändern soll) zum Stamm des Zielprojekts hinzufügt.Kann NuGet dem Zielprojekt eine CS-Datei hinzufügen?

Ist das möglich? Alles, was ich bisher gefunden habe, sagt "Nein, Sie können nur Dateien unterhalb des Paketverzeichnisses installieren".

Antwort

37

Legen Sie einfach Ihre CS-Datei in einen Ordner namens "Inhalt", im Stammverzeichnis des Pakets. .

aus der Dokumentation:

„können Sie eine Verzeichnisstruktur Layout, das die NuGet Konventionen folgt

Tools - Die Werkzeuge Ordner eines Pakets ist für Powershell-Skripte und Programme zugänglich aus dem Package Manager . Console Nachdem der Ordner in das Zielprojekt kopiert wird, wird es an dem `$ env hinzugefügt: Pfad (PATH) Umgebungsvariable

lib - Baugruppen (DLL-Dateien) im Ordner lib als Baugruppe hinzugefügt. r Auswirkungen, wenn das Paket installiert ist.

Inhalt - Dateien im Inhaltsordner werden in das Stammverzeichnis Ihrer Anwendung kopiert, wenn das Paket installiert wird.

Stellen Sie sich den Content-Ordner als Stammverzeichnis Ihrer Zielanwendung vor. Zum Beispiel, wenn ich ein Paket will ein Bild im Verzeichnis/images der Zielanwendung hinzufügen, stellen Sie sicher, dass das Bild im Content/Bilder-Ordner des Pakets setzen „

siehe:. http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#From_a_convention_based_working_directory

+0

wird das Paket Arbeit später zu aktualisieren, wenn ich Änderungen tue –

+4

beachten Sie, dass der Inhalt nur kopiert Wenn das Paket installiert ist, ändert das Aktualisieren/Wiederherstellen des Pakets den Inhalt nicht Daher kann der Inhalt nicht mit nuget aktualisiert werden. Nuget ist wirklich nur nützlich für .net Assembly Abhängigkeiten. – trampster

+0

@trampster ist das heute noch so? Ermöglichen aktuelle Kopien von NuGet das Aktualisieren von "Inhalts" -Dateien? – Todd

8

Sie können auch den <files> Abschnitt des nuspec benutzen, um Ihre Datei in die Inhaltsordner zu verschieben, wenn das Paket gebaut wird:

<?xml version="1.0"?> 
<package> 
    <metadata> 
    ... 
    </metadata> 
    <files> 
    <file src="App.Template.config" target="content" /> 
    <file src="Program.template.cs" target="content" /> 
    </files> 
</package> 
+2

Das Verzeichnis Wildcard, \ * \ *, kann nützlich sein. Das Folgende kopiert alle Unterverzeichnisse eines ./Assets-Verzeichnisses nach ./content/Assets in Ihrem Paket (und schließt alle Dateien mit dem Namen readme.txt aus). stevieg

Verwandte Themen