Organize your chickens: NuGet for the enterprise

Managing software dependencies, whether those created in-house or from third parties can be a pain in the behind. Whether dependencies feel like wild chickens or people run around like chickens
…

Managing software dependencies, whether those created in-house or from third parties can be a pain in the behind. Whether dependencies feel like wild chickens or people run around like chickens dealing with dependencies, the NuGet package manager can be a cure. Let us guide you to creating enterprise (chicken) NuGets and dealing with them in a structured, easy-to-maintain manner. From developer workstation to build server, NuGet tastes great! We'll provide you the dip sauce.

Now isnot the time to take a nap (NaaP) NuGet is more than a package (system), it’s a protocol to:Distributesfunctionality (automateanything!, cfrScaffolding!)Distribute websites (akadeployments!)Distribute software in general 

6.
Welcome to Dependency Hell frustration“A term for the of software users who haveinstalled software packages which have dependencies onspecific versions of other software packages.” (Wikipedia)

7.
Cause and Effect• Reinventing the wheel – We don’t need that dependency – “If they can do it, we can do it, but better”  What happened to reuse of components?• Marketing-Driven Versioning – People are waiting for v2 to buy – Let’s call it v4 Platform Update SP3 November Edition KB2348063 RTW Refresh  We lost ownership of AssemblyVersion ?

16.
NuGet.Server limitations• Only 1 feed per installation• No UI – up to you to build it• No granular security – only 1 API-key for entire feed• Conclusion: requires you to develop if you want something more useful

21.
Dependencies• Software has dependencies. Deal with it.• But are those YOUR intellectual property? – YOUR reason to build software? – YOUR product?• No. They are dependencies. And they don’t belong in source control.

22.
Continuous Package Integration• Can I get rid of all these referenced assemblies duplicated all-over my source control system? Yes!• Do I need to install and maintain NuGet on all my build agents? No!

25.
Problem!• NuGet feed is subject to change... – PackageSource msbuild property to the rescue (NuGet.settings.targets in $(SolutionDir).nuget folder)• Now what... – Host your own feed and mirror packages – Or use MyGet for that 

27.
Guidance• Publishing a package brings great responsibility – Breaking changes in your packages should be versioned accordingly! – Consumers might choose to no longer consume any packages you published