.NET Package Management: NuGet and Beyond
- Package: code you want in your project
- Registry: public repository of packages
- Package Manager: gets the stuff for you and puts it in your project
You have used one of these...
- Windows Update
- Web Platform Installer
- rpm (RedHat)
- apt-get (Debian, Ubuntu)
- Homebrew (Mac OS X)
- App Store
ASP.NET Adoption of Web Tooling and OSS
- 2007: MVC (Rails)
- 2010 NuGet (Ruby gems)
- Node, NPM, Bower, Grunt/Gulp
Good artists copy. Great artists steal.
- Steve Jobs
- Part of Visual Studio
- Package Manager Console
- Package Manager Dialog
- Can deliver front/back end components
- Best for .NET Components
Adding a NuGet Package
- Package contents downloaded to packages folder
- References added to binaries
- Support files added to project
- Web.config parameters added
(and a little choco)
We Have Issues
- NuGet works great for .NET binaries
- Not so good for front-end components
- Files get added to project inconsistently
- We need more control!
- Requires Node, npm, git
- Can be used in alongside Nuget
- Can be used as a harness to run front end utilities like bower, grunt, gulp, yeoman, etc.
- Install on Win or Mac using an install executable/dmg
- OR install with Chocolatey
- Node Package Manager
- Use it to install software that "runs in" Node.js
- Even if not using Node.js for your project you use NPM to manage your "tooling" to build your project
- Installs packages in your project
- Front-end Assets like JS, CSS, Fonts
- Uses public registry like NuGet except WAY more packages/projects available
- Gets source from github repos
- Manage versions
- Flexible configuration
Bower + Gulp
- Manage the versions of your front-end assets with Bower
- Use Gulp to add your .js and .css <script> includes
- Use Gulp for minification, combining scripts, running tests, cache busting!
- Grunt is another alternative
Bower + Gulp Demo
The Future's So Bright...
- ASP.NET 5 and VS 2015
- Node, NPM, Bower, Grunt, Gulp
- You're in control bro, rock on!
- OMG. I'm in control. Bruh.
- Channel 9 - Build 2015 Mads Kristensen - Modern Web Tooling in Visual Studio 2015
Package Management in .NET