What are the current offerings for .NET package management. Which are you using and what are the pros and cons?
Some examples out there today are:
For the avoidance of doubt, I'm referring to package management systems such as gem
, apt-get
, and dpkg
.
NET. Packages are basically compiled library with some descriptive metadata. NuGet is an essential tool for any modern development platform is a mechanism through which developers can create, share, and consume useful code.
NuGet is the package manager for .NET. The NuGet client tools provide the ability to produce and consume packages. The NuGet Gallery is the central package repository used by all package authors and consumers.
The Package Manager Console in Visual Studio uses PowerShell commands to interact with NuGet packages. You can use the console when there's no way to do an operation through the Package Manager UI. You can also use dotnet CLI or NuGet CLI commands in the console.
NuGet was created in 2010 (under the name “NuPack”) by the Outercurve Foundation, a non-profit founded by Microsoft. The goal of this foundation was to "enable the exchange of code and understanding among software companies and open source communities." The Outercurve Foundation was a precursor to the current .
NuGet (formerly NuPack) is a free, open source developer focused package management system for the .NET
Another package manager that is mostly dead nowadays is Horn. Even though development has mostly stopped now, I think it is/was an interesting project.
It took an interesting approach to package management, based on compiling from source code first instead of relying purely on binary packages, in a similar way to gentoo portage's ebuild. This gives the developer ultimate freedom to mix and match library versions (as opposed to waiting for project mantainers to officially update their dependencies), but as they say "with great power comes great responsibility", it is also up to the developer to make sure that the stack he compiles does work.
Of course you could play it safe and instead of building everything from trunk you could fix dependencies versions in your descriptors (for example, there is one descriptor for Castle Windsor trunk and another for Windsor 2.1).
For those that didn't want to build everything from source (which is naturally a very slow process), there was a server at hornget.net that acted as a continuous integration server and provided binary packages.
Since you referred to package management systems that are geared towards the machine, I thought I would mention chocolatey, which is like apt-get but for Windows.
FYI: I am one of the Nu/NuGet guys and I invented chocolatey for what I didn't see come over from Ruby Gems when we switched to NuGet (which were the executable type gems, NuGet is really for libraries and source code, not the products/tools/apps that come out on the other side of source). Since then chocolatey has grown to support PowerShell execution which allows you to do just about anything on Windows.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With