2010-11-23 13 views

Respuesta

62

OpenWrap es un proyecto de código abierto que proporciona administración de dependencias en aplicaciones, no solo en tiempo de compilación sino también en tiempo de ejecución.

Como tal, nuestras características se dirigen a la resolución dinámica de dependencias, ya sea para aplicaciones compuestas WPF, desarrollo de aplicaciones web o utilidades para todo el sistema. Esto hace que nuestra implementación sea muy diferente de lo que hace NuGet.

Así que estas son las cosas que son diferentes (probablemente me olvidaré mucho, pero ah bien).

  • Sin dependencia de Visual Studio, y se centran en la productividad en la línea de comandos en lugar de en una interfaz de usuario
  • Sin dependencia de PowerShell, OW viene con su propio sistema de comandos que le permite desarrollar, implementar y ejecutar su propios comandos, ya sea desde nuestro shell (la herramienta o.exe) o desde MSBuild.
  • OpenWrap utiliza OpenWrap para compilarse e implementarse, y es compatible con xcopy en cada paso del camino.
  • Tiene un repositorio de todo el sistema de paquetes, por lo que se puede desplegar sus comandos de utilidad una vez en lugar de una vez por solución
  • soporta una resolución de dependencia dinámica en tiempo de ejecución, en caso de que desee hacer que
  • tiene un formato de paquete extensible, para que pueda crear nuevos tipos de dependencias en un paquete y tienen OpenWrap ayudarle a usarlas en su aplicación
  • Soporta ambos paquetes OpenWrap y paquetes NuGet y repositorios
  • mantiene alejada de las complicaciones de XML y OData, y se va a simples DSL basadas en texto que son fáciles y rápidas de aprender
  • soporte integrado de construcción, para que pueda construir y empaquetar la solución de una sola vez
  • Soporta repositorios personalizados en un recurso compartido de red que se puede publicar a partir de la cáscara openwrap o las tareas msbuild
  • Proporciona nivelación dependencia, eligiendo automáticamente qué combinación de versiones de paquetes resueltos
  • La integración de Resharper significa que cualquier cambio que realice en sus dependencias se refleja en VS en tiempo real
  • La integración de TeamCity significa que puede compilar, empaquetar e implementar su paquete utilizando exactamente el mismo proceso, desde un script de MSBuild o desde la línea de comandos
  • constructores extensibles significa que puede cambiar la forma en la acumulación se activa en OpenWrap
  • apoyo para los corredores de las pruebas y exámenes envío junto con paquetes
  • usos a puntos de extensibilidad de MSBuild para incluir referencias de ensamblado, y deja el código que construyó solo. Una vez que envía los archivos binarios, , no tiene dependencia de código openwrap, solo en tiempo de compilación.

Eso es solo por las diferencias, ya que eso es lo que preguntaste, así que no te molestaré con lo que hacemos igual que otros gestores de paquetes.

+3

openwrap.org (su página de inicio) está reventado, páginas wiki pirateadas y no se ha confirmado durante 3 años. ¡En el mundo de OSS, eso se traduce en algo que está ** muerto **! – Mrchief

+3

Bueno, sí, pero luego comentas una publicación que data de 11. Las herramientas de Nuget han ganado, nada que ver aquí, seguir adelante. – SerialSeb

+2

¿No deberías actualizar tu respuesta? Honestamente IDK por qué esta pregunta se mantiene abierta, incluso, no sigue las pautas de todos modos. Agregué el comentario como una ayuda, solo para que pueda ahorrar tiempo a los visitantes futuros. – Mrchief

57

Solo quería compartir algunas ideas del lado NuGet de las cosas. Seb omite algunos detalles que vale la pena señalar.

  • Si bien nuestra interfaz de usuario primaria está basada en VS, el conjunto de núcleo NuGet no tiene ningún vínculo con VS. El producto ASP.NET Web Pages tiene un administrador de paquetes basado en la web. Escribí una publicación de blog que muestra un ejemplo del uso de NuGet para construir un sitio web que se actualiza en tiempo de ejecución. http://haacked.com/archive/2011/01/15/building-a-self-updating-site-using-nuget.aspx
  • NuGet ofrece una poderosa consola PowerShell. Los paquetes NuGet pueden agregar nuevos comandos a la consola. Ver http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/. Como antes, este es un cliente de NuGet y el núcleo de NuGet no lo requiere.
  • NuGet está disponible para instalar a través de la galería de extensiones VS y es muy fácil comenzar a utilizarlo de inmediato.
  • NuGet admite señalar al cliente en un directorio (o recurso compartido de red) que contiene un conjunto de paquetes y lo trata automáticamente como un repositorio. Entonces, si no quieres tratar con OData, no tienes que hacerlo. Pero también incluimos una implementación de nuestra galería, por lo que no es necesario tratar manualmente con OData/XML en ningún caso.
  • NuGet no requiere que implemente ninguna parte de NuGet como parte de su aplicación. Se mantiene alejado de las manos y se centra en la automatización de los pasos que tomaría sin NuGet para adquirir e implementar sus dependencias. Para ser claros, como señala Seb, tampoco lo hace OpenWrap. Solo quería dejar en claro que NuGet no requiere esto también.
+13

De nuevo Phil, voy a reiterar lo que he dicho muchas veces antes. No es necesario que envíe ninguna parte de OpenWrap como parte del resultado de una compilación. OpenWrap se incluye dentro de la compilación para agregar referencias cuando se le solicite, en lugar de rebuscar directamente con los archivos csproj, y esa es la única diferencia en el tiempo de compilación. También admitimos el tiempo de ejecución, si eso es lo que quiere la gente. – SerialSeb

+13

Seb, nunca dije que Open Wrap lo hiciera, pero puedo ver que mi última afirmación sugiere que sí. Aclaré el punto basándome en tu comentario. Gracias por aclarar eso para mí! – Haacked

+0

A partir de ahora el paquete usablity of nuget está vinculado a la versión nuget, que a su vez está vinculada a la versión visual studio impidiendo así la capacidad de usar paquetes incluso si los dlls son directamente utilizables en vs –

17

Uno de los principios clave de NuGet (y una diferencia importante con OpenWrap) es que no intenta cambiar su forma de trabajar. En cambio, hace que sea mucho más fácil hacer las cosas que ya hace hoy.

Digamos, por ejemplo, que está tratando de usar una biblioteca Foo, que depende de una biblioteca Bar. Hoy, tendrías que encontrar esas bibliotecas manualmente, copiarlas a tu máquina y agregar referencias a ellas. Luego, aparecerán versiones más nuevas y se realizarán movimientos similares para actualizarlos.

En tal caso, tanto NuGet como OW harán que sea más fácil incluir esas referencias, pero la diferencia clave es que NuGet lo hace de una manera completamente no invasiva. es decir, obtendrá los binarios en su máquina y los referenciará de la misma manera que si lo hubiera hecho manualmente. Después de que lo haya hecho, su archivo de proyecto es completamente 'normal', sin ningún vínculo con NuGet en la compilación o en el tiempo de ejecución.

Lo que esto significa es que si obtiene algunas bibliotecas a través de NuGet y pone su proyecto en control de código fuente, otro desarrollador puede entonces usar su proyecto sin necesidad de NuGet.

El enfoque OpenWrap también tiene ventajas, pero para seguir ese camino, debe estar dispuesto a utilizar OpenWrap por completo y no ser capaz de alejarse de él.

Existen muchas otras diferencias (como compatibilidad con VS enriquecido en NuGet), pero esto es lo que considero la diferencia más fundamental entre las dos.

+15

Ver respuesta a Phil. Obviamente no has usado OpenWrap para afirmar que de alguna forma bloqueo a las personas y las obligo a distribuir OpenWrap como parte del resultado de una compilación. Sobre todo teniendo en cuenta que ambas herramientas pueden funcionar una al lado de la otra sin problemas, y que OpenWrap admite paquetes NuGet pero no al revés ... – SerialSeb

Cuestiones relacionadas