Skip to content
serialseb edited this page Sep 2, 2010 · 26 revisions

OpenWrap

OpenWrap is a package management system for .net.

Note, if you fork to work on the code base, there’s (temporarily) a submodule to other projects in /wraps/ext, you need to pull those manually or the code won’t build. It’s a temporary quick way to split out the bits that are openwrap packages openwrap depends on, and will be removed shortly

Please note that some of the documentation doesn’t reflect (yet) the implementation, I’m trying to write both at the same time

What is it?

OpenWrap lets you search for and consume packages in your projects, and resolve for you the various dependencies that each of those packages contain. This will let you easily install your latest open-source framework as easily as typing o wrap add nhibernate.

OpenWrap also comes with an extensible command-based system that can be deployed alongside your packages, letting you provide tools to use with your project alongside it, while still being xcopy friendly.

Quick start

First, you need to configure your project to consume OpenWraps. You can do this by following the steps in Consuming wraps from MSBuild

Then you’ll need to build your descriptor, using a very simple text-based DSL.

You can also see a list of commands you can execute.

FAQ

  • What’s a package manager?
    A package manager is a tool that lets you find and use packages. OpenWrap is a package manager for .net that lets you find, install and use assemblies of common open-source projects, as well as a packaging format and a command-line API that you can use for your tools.
  • What about dependencies?
    Each package can describe list of dependencies it requires. When installing a wrap, you will automatically pull all the dependency tree necessary to run the code.
  • How is that different from bricks / webgac / gems / CoApp / Insert favourite name here?
    OpenWrap is a package management tool, and packages may contain many things that are not dlls you want to add to your project. That’s something that has been planned for by default in OpenWrap.
    Furthermore, OpenWrap is built to help deliver OpenRasta, so it’s built on real requirements and has to be maintained for OpenRasta to continue existing.
    As other solutions mature (or, in some cases, start publishing some code), we’ll have a better view of where we are and what features are different.
  • Why build yet another one then?
    Because it is needed for building OpenRasta, that other systems either don’t exist, were announced much later or didn’t fit my requirements.