2012-01-31 21 views
8

Ho incorporato la seguente riga nella CI-costruire per creare un pacchetto privato NuGet su ogni costruire:NuGet: include file PDB ed escludere la cartella "Contenuto"

nuget pack C:\Projects\Test\Test.vbproj -OutputDirectory \\nas1\NuGet 

Il AssemblyInfo viene letto (incluso il numero di versione ) e viene creato un pacchetto NuGet.
Mi piacerebbe che il pacchetto per includa i file .pdb e non contenga una cartella "Contenuto" (quindi solo "lib").

Come posso modificare il comando per farlo?

risposta

10

Sfortunatamente, non penso che sarete in grado di escludere i file di contenuto e includere i file .pdb durante l'imballaggio tramite il progetto. Potresti fare l'una o l'altra.

Innanzitutto, creare un file nuspec (il comando nuget spec lo rende veloce) e inserirlo nella stessa posizione del progetto. Quando impacchettate il vostro progetto, NuGet.exe tratterà le specifiche come supplemento alle informazioni del vostro progetto.

Per eliminare la cartella di contenuto, quando si impacchetta un progetto che ha anche un file .nuspec, un nodo vuoto <files /> nella specifica indicherà che non si desidera alcun file di contenuto, anche se esistono nel progetto.

per includere i file di debug, aggiungere qualcosa di simile al vostro spec:

<files> 
    <file src="bin\*.pdb" target="lib\net35\" />  
    </files> 

ma che sarebbe dire lo strumento che si fai avere un contenuto, e allora sarebbe aggiungere tutte le altri file , anche. Potresti, forse, creare un symbol package per il tuo progetto, invece.

Un'altra opzione sarebbe quella di creare esclusivamente dalle specifiche (nuget pack Test.nuspec) e specificare esattamente i file che si desidera includere. Richiede più tempo, ma ti dà il controllo completo sui contenuti del pacchetto.

+3

Dopo aver dato questo un po 'di pensiero, suppongo che sia tecnicamente possibile farlo tramite il comando linea includendo il .pdb attraverso la specifica (come sopra) e quindi usando il flag -Exclude per omettere i tipi di file che non si desidera.Ma dovresti escludere _every_ un singolo tipo di file che non sia una dll o un pdb che verrebbe incluso in "contenuto", che potrebbe essere o non essere pratico per te. Ad esempio, questo escluderebbe config, xml e trasforma i file dal pacchetto (e include i file pdb, poiché sono impostati nel .nuspec): 'pacchetto nuget -Exclude ** \ *. Config; * * \ *. xml; ** \ *. transform' – brainiac10

+0

+1 per eliminare la cartella del contenuto con un '' '' '' nodo vuoto. –

1

Nei file di contenuti che non si desidera raggruppare, è necessario che abbiano un'azione di creazione di "Contenuto" nel progetto (nella finestra delle proprietà del file in Visual Studio, se questo è il tuo IDE)?

Se è accettabile modificare l'azione di compilazione su "Nessuno" (o qualsiasi altra cosa), quindi non finirà nella cartella del contenuto.

0

La seguente soluzione funziona, se non ti dispiace includere anche i file di origine. di ignorare i file di contenuto di aggiungere un nodo tale vuoto per il vostro nuspec:

<files> 
</files> 

e quindi eseguire:

nuget pack C:\Projects\Test\Test.vbproj -Symbols 
nuget push *.symbols.nupkg -Source \\nas1\NuGet 
+0

La soluzione vuota non funziona più per me. –

Problemi correlati