2016-01-26 18 views
5

Prima di Visual Studio 2015, era banale impostare il progetto per generare automaticamente i pacchetti NuGet. In particolare, l'avete fatto:Esiste un modo semplice per creare automaticamente un pacchetto NuGet da un progetto di Visual Studio 2015?

  1. Aggiungere un file di .nuspec al progetto
  2. Abilita NuGet pacchetto Ripristinare nella soluzione tasto destro del mouse menu contestuale
  3. Modificare il progetto .csproj file e impostare la costruire immobili <BuildPackage> true

E che è stato!

Tuttavia, a partire da VS 2015, MSBuild-integrated package restore has been removed e sostituito dal nuovo Automatic Package Restore. Sebbene queste siano tutte buone notizie, sembra che l'impostazione della proprietà di build <BuildPackage> su true non attivi più una generazione automatica dei pacchetti.

Questa è una grande interruzione di funzionalità! C'è un modo per configurare le build automatiche di NuGet senza utilizzare eventi post-build? In particolare, sto cercando una soluzione MSBuild, poiché costituisce la spina dorsale del mio flusso di lavoro di build.

+0

Sarebbe interessante vedere come un flusso di lavoro di costruzione si basa su questo, ma guardando da VS 2015, l'output di un progetto .xproj è solo il pacchetto NuGet, che soddisfa ancora di più le tue esigenze. –

+1

.xproj? Questa è la prima volta che ne ho sentito parlare. Sembra che ci siano informazioni sparse sul Web riguardo a questo tipo di file di progetto. Ti interessa elaborare come andresti sulla creazione o conversione di un progetto C# in un .xproj per produrre un pacchetto nuget? Questa sarebbe un'ottima risposta. – glopes

risposta

0

C'è uno spostamento in Class Library Packages in VS2015 che rende incredibilmente facile creare pacchetti NuGet. Ho già fatto questo blogged, ma in sostanza sono solo pochi passi. Si noti che questo è solo un RC1 al momento e non ancora una versione stabile.

  1. Installare l'aggiornamento ASP.NET and Web Tools 2015 (RC1 Update 1) su VS2015.

  2. Aprire VS2015 e creare un nuovo progetto Pacchetto libreria di classi.

Class Library Package

  1. aggiungere il codice alla biblioteca e configurare il file project.json con le eventuali modifiche che potrebbe essere necessario. Un file project.json default viene utilizzato come esempio.

  2. Fare clic con il tasto destro del mouse sul progetto e selezionare la voce di menu Proprietà. Nella scheda Build seleziona "Produce output on build". Costruisci il progetto.

Produce output

Il gioco è fatto. Vai alla cartella delle risorse nel tuo progetto, nel mio caso "artifacts \ bin \ AwesomeSoft.TextConverter \ Debug".

Si dovrebbe vedere il pacchetto NuGet già creato e le cartelle che hanno come target ogni framework specificato in precedenza.

Final nuspec

+1

Questa funzione è ancora disponibile? Ho aggiornato ASP.NET e gli strumenti Web alla versione 14.1.21111 e non ho un tipo di progetto "Libreria di classi (pacchetto)". Non sono sicuro se è stato rinominato o rimosso, e tutti i risultati di ricerca per il pacchetto di librerie di classi sono datati ~ gennaio 2016 –

+2

No è ​​stato rimosso. È necessario aggiungere uno script post-build nel file project.json o eseguire manualmente il comando "dotnet pack". –

+0

Ecco una risposta correlata http://stackoverflow.com/a/40952613/299327 –

4

Prova OctoPack: https://www.nuget.org/packages/OctoPack/

Basta aggiungere NuGet pacchetto al progetto.

Se si vuole costruire ogni volta che si genera il rilascio, aggiungi alla sezione <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|Whatever' "> riga successiva:

<RunOctoPack>true</RunOctoPack> 

Maggiori informazioni su finetuning può essere trovato qui: https://github.com/OctopusDeploy/OctoPack