2012-05-28 15 views
26

Voglio creare un pacchetto NuGet che aggiunge un file .cs (una classe base che il consumatore del pacchetto è invitato a modificare in seguito) alla radice del progetto di destinazione durante l'installazione.NuGet può aggiungere un file .cs al progetto di destinazione?

È possibile? Tutto quello che ho trovato finora dice "no, puoi solo installare i file sotto la directory del pacchetto".

risposta

37

Basta inserire il file .cs in una cartella denominata "contenuto", nella radice del pacchetto. .

dalla documentazione:

"è possibile il layout di una struttura di directory che segue le convenzioni Nuget

strumenti - La cartella strumenti di un pacchetto è per gli script PowerShell e programmi accessibili dal Package Manager . Console Dopo che la cartella viene copiato nel progetto di destinazione, si è aggiunto al `$ ENV: Path (PATH) variabile d'ambiente

lib - Assemblee (file dll) nella cartella lib vengono aggiunti come assemblaggio. r eferenze quando il pacchetto è installato.

contenuto - I file nella cartella del contenuto vengono copiati nella directory principale dell'applicazione quando il pacchetto è installato.

Pensa alla cartella Contenuto come root della tua applicazione di destinazione. Ad esempio, se voglio un pacchetto per aggiungere un'immagine nella directory/immagini dell'applicazione di destinazione, assicurarsi di posizionare l'immagine nella cartella Contenuto/immagini del pacchetto "

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

+0

Sarà l'aggiornamento del pacchetto di lavoro più tardi, quando faccio le modifiche –

+4

essere consapevoli che il contenuto viene copiato solo quando il pacchetto è installato, l'aggiornamento/ripristino del pacchetto non cambia il contenuto, t per questo motivo il contenuto non può essere aggiornato con nuget. Nuget è davvero utile solo per le dipendenze di .net assembly. – trampster

+0

@trampster è ancora così oggi? Le copie recenti di NuGet consentono di aggiornare i file "di contenuto"? – Todd

8

è inoltre possibile utilizzare la sezione <files> del nuspec per spostare il file nella cartella contenuto quando il pacchetto è in fase di costruzione:?

<?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

Il carattere jolly della directory, \ * \ *, può essere utile. La seguente copia tutte le sottodirectory di una directory ./Assets in ./content/Assets nel pacchetto (ed esclude qualsiasi file denominato readme.txt). stevieg

Problemi correlati