2012-03-20 9 views
36

Non riesco a ottenerlo - qualcuno può spiegarmi perché dovrei usare NuGet invece di installare un gruppo di librerie tramite un setup.exe o un MSI? Che vantaggio c'è?Perché utilizzare NuGet durante l'installazione di librerie direttamente sulla mia macchina

Ad esempio, è meglio installare Entity Framework 4.3 tramite NuGet anziché scaricare l'installazione? Inoltre, se installo il framework di entità tramite NuGet, è disponibile per qualsiasi nuova soluzione o progetto che creo (bit confuso qui).

Fondamentalmente ciò che fa NuGet fare che una normale installazione non fa (o viceversa!)

risposta

32

Oltre a semplificare l'aggiunta di un pacchetto al progetto, ritengo che il vantaggio principale di NuGet sia la gestione delle dipendenze.

NuGet consente ai proprietari del progetto di impacchettare le loro librerie come pacchetti. Prima, se dipendevano da altre librerie come log4net, includevano quegli assembly nel loro file setup/zip e si caricavano sul loro sito web.

Con NuGet, si aggiunge semplicemente un riferimento a questi pacchetti esterni nel file .nuspec. Quando NuGet installa il pacchetto, vedrà che ci sono delle dipendenze e scaricherà e installerà automaticamente anche questi pacchetti. Supporta anche la gestione dei conflitti in modo che se 2 pacchetti dipendono da versioni differenti, ne individuerà il corretto da installare.

Penso che il modo migliore per determinare se NuGet funzionerà per te è provare a utilizzarlo.Sono sicuro che una volta che lo fai, ti renderai conto che ha molti vantaggi.

+0

'scaricherà e installerà automaticamente anche questi pacchetti', e se Internet non fosse disponibile sul sito? – bjan

+0

Il "download automatico" era in riferimento alle dipendenze. L'installazione del pacchetto iniziale viene avviata dall'utente. Per quanto riguarda l'accesso a Internet, è possibile scaricare tutti i pacchetti necessari da un'altra posizione, quindi copiarli sul computer di destinazione. Ora è possibile aggiungere la cartella locale ai repository del pacchetto NuGet e le installazioni verranno trasferite da qui anziché da nuget.org. – Kiliman

+0

Di recente ho avuto un problema che mi ha confuso. Ho sviluppato una soluzione con più librerie di aiuto (mie), diverse librerie utilizzavano diversi pacchetti aggiunti tramite nuget. Ho fatto riferimento a una delle librerie (singolo file dll) in un'altra soluzione e su Build, VS2010 si è lamentato della libreria refernced piuttosto che del pacchetto mancante. C'è un modo per sapere quale pacchetto manca/richiesto in questo caso particolare. – bjan

19

Nuget fornisce numerosi vantaggi aggiuntivi:

  • esso automaticamente configura i vostri progetti con l'aggiunta di riferimenti a gli assembly necessari, creando e aggiungendo file di progetto (es. configurazione), ecc.
  • fornisce gli aggiornamenti del pacchetto
  • fa tutto questo molto convenientemente
16

Che vantaggio c'è?

Nuget semplifica terzo librerie inserimento: Con una sola riga di comando (Install-Package EntityFramework) fate il vostro pacchetto disponibile per il vostro progetto. Invece di cercare su Google, trova il pacchetto nel tuo progetto ...

L'aggiornamento automatico non è obbligatorio, il file di configurazione di Nuget ti consente di specificare la versione, o l'intervallo di versione, che la tua applicazione è compatibile con.

Inoltre, se installo Entity Framework tramite Nuget quindi è a disposizione di eventuali nuove soluzioni o progetti che creo

Una volta che è stato installato un pacchetto, DLL vengono copiati in una directory a soluzione livello, puoi quindi farvi riferimento da lì in altri progetti della vostra soluzione.

Per ogni nuova soluzione, la reinstallazione dei pacchetti è una soluzione migliore. Dato che è molto facile con nuget, non sarà un problema.

+0

+1 per aver detto che i pacchetti sono installati a livello di soluzione. Non è raro avere più app web (progetti) in una singola soluzione e nuget ha quella coperta. – styfle

+0

Ho sviluppato una soluzione con più librerie di aiuto, diverse librerie utilizzavano diversi pacchetti aggiunti tramite nuget. Ho fatto riferimento a una delle librerie (singolo file dll) in un'altra soluzione e su Build, VS2010 si è lamentato della libreria refernced piuttosto che del pacchetto mancante. – bjan

5

Nuget contribuisce alla creazione di un inferno DLL e rende la soluzione andare fuori controllo molto rapidamente, soprattutto quando entrano in gioco diverse versioni dei cosiddetti "pacchetti". A parte il versioning degli assembly, ora ci sono versioni del pacchetto nuget. Nuget sta semplicemente aggiungendo un altro wrapper su DLL e non fa nulla che possa rendere la vita degli sviluppatori più facile.

+1

La domanda era: perché si dovrebbe usare Nuget. La mia risposta è - rendere la loro vita più dura e migliorare i problemi di inferno dll. Come non fornisce una risposta? –

+0

Grazie per aver fornito una voce equilibrata. Vorrei che l'OP avesse chiesto pro e contro. –

+1

Quindi se qualcuno chiedesse "Perché sono così bello?" sullo stack overflow le uniche risposte che dovrebbero apparire sono spiegazioni su quanto sia bella quella persona? Anche se la domanda è chiedere il positivo, è più costruttivo considerare anche il negativo. – bryjohns

Problemi correlati