Domanda

Qual è la differenza tra OpenWrap e NuGet.E tu cosa preferisci?

È stato utile?

Soluzione

OpenWrap è un progetto open source che fornisce la gestione delle dipendenze nelle applicazioni, non solo in fase di compilazione ma anche in fase di esecuzione.

Pertanto, le nostre funzionalità sono mirate alla risoluzione dinamica delle dipendenze, che si tratti di applicazioni WPF composite, sviluppo di app Web o utilità a livello di sistema.Ciò rende la nostra implementazione molto diversa da ciò che fa NuGet.

Quindi ecco le cose che sono diverse (probabilmente dimenticherò molto, ma va bene).

  • Nessuna dipendenza da Visual Studio e concentrazione sulla produttività dalla riga di comando anziché dall'interfaccia utente
  • Nessuna dipendenza da PowerShell, OW viene fornito con un proprio sistema di comandi che ti consente di sviluppare, distribuire ed eseguire i tuoi comandi, sia dalla nostra shell (lo strumento o.exe) che da MSBuild stesso.
  • OpenWrap utilizza OpenWrap per creare e distribuire se stesso ed è compatibile con xcopy in ogni fase del processo.
  • Dispone di un repository di pacchetti a livello di sistema, quindi puoi distribuire i comandi dell'utilità una volta anziché una volta per soluzione
  • Supporta la risoluzione dinamica delle dipendenze in fase di esecuzione, se lo desideri
  • Ha un formato di pacchetto estensibile, quindi puoi creare nuovi tipi di dipendenze in un pacchetto e fare in modo che OpenWrap ti aiuti a usarle nella tua applicazione
  • Supporta sia pacchetti OpenWrap che pacchetti e repository NuGet
  • Si tiene ben lontano dalle complicazioni di XML e OData e preferisce semplici DSL basati su testo, facili e veloci da apprendere
  • Supporta la creazione integrata, così puoi creare e creare pacchetti della tua soluzione in una sola volta
  • Supporta repository personalizzati su una condivisione di rete su cui è possibile pubblicare dalla shell openwrap o dalle attività msbuild
  • Fornisce il livellamento delle dipendenze, scegliendo automaticamente quale combinazione di versioni dei pacchetti viene risolta
  • L'integrazione di Resharper significa che qualsiasi modifica apportata alle dipendenze si riflette in VS in tempo reale
  • L'integrazione di TeamCity significa che puoi creare, impacchettare e distribuire il tuo pacchetto utilizzando esattamente lo stesso processo, da uno script MSBuild o dalla riga di comando
  • Builder estensibili significa che puoi modificare il modo in cui la build viene attivata all'interno di OpenWrap
  • Supporto per i test runner e test di spedizione insieme ai pacchi
  • Utilizza i punti di estensibilità MSBuild supportati per includere riferimenti all'assembly e lascia intatto il codice compilato.Una volta spediti i file binari, non hai alcuna dipendenza dal codice openwrap, solo in fase di compilazione.

Questo è solo per le differenze, poiché è quello che hai chiesto, quindi non ti disturberò con ciò che facciamo come gli altri gestori di pacchetti.

Altri suggerimenti

Volevo solo carillon con alcuni pensieri dal lato NuGet delle cose. foglie Seb fuori alcuni dettagli che vale la pena sottolineare.

  • Mentre il nostro principale interfaccia utente è basata VS, il nucleo NuGet assemblea non ha alcun legame con VS. Il prodotto ASP.NET Web Pages ha una web-based gestore di pacchetti. Ho scritto un post sul blog che mostra un esempio di utilizzo di NuGet per costruire un sito web che si aggiorna in fase di esecuzione. http://haacked.com /archive/2011/01/15/building-a-self-updating-site-using-nuget.aspx
  • NuGet fornisce una potente console PowerShell. pacchetti Nuget possono aggiungere nuovi comandi alla console. Vedere http : //blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/ . Come prima, questo è un client per NuGet e nucleo NuGet non richiede esso.
  • NuGet è disponibile per l'installazione tramite la Galleria estensione VS ed è molto facile per iniziare immediatamente.
  • supporti Nuget che punta il cliente in una directory (o condivisione di rete) che contengono una serie di pacchetti e automaticamente lo tratta come un repository. Quindi, se non si vuole trattare con OData, voi non dovete. Ma includiamo anche un'implementazione della nostra galleria quindi non c'è necessità di trattare manualmente con OData / XML in ogni caso.
  • NuGet non richiede di distribuire qualsiasi parte del NuGet come parte della propria applicazione. Rimane mani e si concentra sulle automatizzando i passi che avrebbe preso, senza NuGet di acquisire e distribuire le dipendenze. Per essere chiari, come sottolinea Seb fuori, né fa OpenWrap. Volevo solo chiarire che NuGet non richiede questo.

Uno dei principi chiave della NuGet (e una differenza importante con OpenWrap) è che non cerca di cambiare il modo di lavorare. Invece, lo rende molto più facile fare le cose che già fa oggi.

Dire per esempio che si sta cercando di utilizzare una libreria Foo, che dipende da una libreria Bar. Oggi, che avrebbe dovuto trovare manualmente quelle librerie, copiarli alla vostra macchina e aggiungere i riferimenti a loro. Poi le versioni più recenti in seguito verrà fuori e ti passare attraverso movimenti simili a farli aggiornati.

In tale scenario, sia NuGet e OW sarà lo rendono facile da portare in quei riferimenti, ma la differenza fondamentale è che NuGet lo fa in un modo che è completamente non invasivo. vale a dire otterrà i binari sulla vostra macchina e riferimenti loro nello stesso modo come se si fosse realizzato manualmente. Dopo che è fatto, il file di progetto è completamente 'normale', senza alcun legame con NuGet all'atto della compilazione o di esecuzione.

Ciò significa che se si ottiene alcune librerie tramite NuGet e mettere il progetto in controllo del codice sorgente, un altro sviluppatore è quindi in grado di utilizzare il vostro progetto senza bisogno di NuGet a tutti.

L'approccio OpenWrap ha meriti pure, ma di seguire questa strada, si deve essere disposti a utilizzare OpenWrap tutta la strada, e non facilmente essere in grado di allontanarsi da esso.

Ci sono molte altre differenze (come il supporto ricco VS di NuGet), ma questo è ciò che io considero come la differenza fondamentale tra i due.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top