An overview of the
NuGet ecosystem
Maarten Balliauw
@maartenballiauw
Who am I?
Maarten Balliauw
Daytime: Technical Evangelist, JetBrains
Co-founder of MyGet
Author – Pro NuGet http://amzn.to/pronuget
AZUG
Focus on web
ASP
.NET MVC, Windows Azure, SignalR, ...
MVP Windows Azure & ASPInsider
http://blog.maartenballiauw.be
@maartenballiauw
Before NuGet: third-party and OSS
Everything points towards Microsoft
Only for those who search
Google, Bing, CodePlex, GitHub, …
False competition
Microsoft things either bundled or via a neat installer
Hard to integrate OSS
Compile? Find right version? Find right dependencies?
Before NuGet: sharing own code
Shared code in source control
Or compiled code in separate assembly
Separate assembly on a network share or in source control
No versioning on the assembly file
Update nightmare (“big solutions”)
Enforce Explicit Semantic Versioning
www.semver.org
Major
Breaking changes
Minor
Backwards compatible API additions/changes
Patch
Bugfixes not affecting the API
<dependency id="ExamplePackage" version="1.3.2" />
1.0 = 1.0 ≤ x
(,1.0] = x ≤ 1.0
(,1.0) = x < 1.0
[1.0] = x == 1.0
(1.0) = invalid
(1.0,) = 1.0 < x
(1.0,2.0) = 1.0 < x < 2.0
[1.0,2.0] = 1.0 ≤ x ≤ 2.0
empty = latest version
Hosting Your Own Repository
Folder / File share
NuGet.Server package
NuGet Gallery – www.github.com/nuget/nugetgallery
MyGet – www.myget.org
Create your own feed!
Have a copy of your dependencies!
Manage approved packages
Manage licenses
Host your own packages
Private feeds
Use it for staging packages
One more recommendation…
Don’t just update
Not everyone respects SemVer…
Don’t autoupdate during builds
Continuous Integration: Same Input = Same Output
Many, many, many
Outercurve Foundation NuGet Project
TeamCity support for NuGet
NuGet-based tools by Microsoft
Artifactory support for NuGet
NuGet Package Explorer
Nexus support for NuGet
MyGet (NuGet-as-a-Service)
Glimpse Plug-ins
Chocolatey
ReSharper Plug-ins
OctopusDeploy
Orchard
RedGate Deployment Manager
NuGetMustHaves
SymbolSource
NuGetFeed
ProGet (Inedo)
NuGetLatest
CoApp
NuGet server in Java
BoxStarter
NuGet Fight
SharpDevelop NuGet plug-in
NuGit
Xamarin NuGet plug-in
see http://docs.nuget.org/docs/reference/ecosystem
Automate deployments
Build results in .nupkg
Octopus deploys to its tentacles
Test tentacles
Staging tentacles
Production tentacles
www.octopusdeploy.com
Plugins / AddOns / …
NuGet Package Explorer – own feed
OCTGN – own feed
SharpDevelop – own feed
ReSharper – http://resharper-plugins.jetbrains.com/
Orchard CMS – http://gallery.orchardproject.net/
EPiServer – http://nuget.episerver.com/