Nuget All.Pdf
Total Page:16
File Type:pdf, Size:1020Kb
NuGet Package Management solution for .NET. www.scmGalaxy.com WHO AM I? Rajesh Kumar [email protected] Agenda Nuget Feature Overview Nuget Components Consuming Packages Creating Packages Publishing Packages Hosting Your own Nuget Feed Nuget Community and Advanced Topics www.scmGalaxy.com 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? www.scmGalaxy.com 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”) www.scmGalaxy.com NuGet! www.scmGalaxy.com With NuGet: third-party and OSS One repository: NuGet.org OSS and Microsoft provided libraries mixed Dependencies, Configuration changes, Versioning www.scmGalaxy.com With NuGet: sharing own code Create a NuGet package Specify dependencies, enforce versioning Consuming project: specify version Updating is a joy www.scmGalaxy.com What is Packages? A package is a bundle of something you want to reuse. It can have dependencies to other packages. It can contain files: Assemblies Content Tools www.scmGalaxy.com What is NuGet NuGet is the package manager solution for the Microsoft development platform. The NuGet client tools provide the ability to produce and consume packages. The NuGet Gallery is a central package repository used by all package authors and consumers. www.scmGalaxy.com What is NuGet Open Source Project initiated by Microsoft http://nuget.codeplex.com/ Intended to solve the issues related to management of 3rd party assembly dependencies Microsoft Non .NET Framework stuff Open Source Libraries You own libraries! www.scmGalaxy.com Of course it was inspired by… Linux RPM Package Manager Ruby Gems … www.scmGalaxy.com NuGet in Visual Studio Releases 1/14/2011 3/30/2011 6/17/2011 12/13/2011 5/23/2012 10/4/2012 2/15/2013 6/26/2013 10/7/2013 1.0 1.2 1.4 8/30/2011 1.6 4/4/2012 1.8 6/19/2012 2.1 12/12/2012 2.2.1 4/25/2013 2.6 8/22/2013 2.7.1 2/12/2011 4/25/2011 1.5 1.7 2.0 2.2 2.5 2.7 1.1 1.3 Introduced with ASP.NET 2/28/2012 8/22/2012 4/4/2013 9/9/2013 MVC 3 Visual Studio Visual Studio Visual Studio Visual Studio and 2012 Beta 2012 RTM 2012 Update 2 2013 RC Web Pages v1 5/31/2012 6/26/2013 Visual Studio Visual Studio Visual Studio 2013 RTM 2012 RC 2013 Preview www.scmGalaxy.com NuGet Architect Components WCF Data C# C# Services VS Addin Console Gallery NuGet App Server Core MsBuild Tasks Package Explorer www.scmGalaxy.com www.scmGalaxy.com Components NuSpec . Xml file containing the specification to be packaged NuGet.Core . NuGet.Core is the core framework assembly for NuGet that the rest of NuGet builds upon. NuPkg . Zip file containing the package contents, [un]install scripts, and NuSpec NuGet Gallery . Hosted website to serve up latest or specific versions of packages (NuPkg) NuGet VS Extension . Visual Studio Plugin to allow installation of packages Nuget.exe . Command line application for installing packages and managing gallery www.scmGalaxy.com NuSpec File This is a trivial example, you can also have specialized install and uninstall scripts referenced for complicated projects (i.e. jQuery). Heavywww.scmGalaxy.com use of convention in absence of declarative! NuPkg File This is a simple type of package so in absence of special logic NuGet will be add a reference pointing at the matching framework dir to the csproj in question. www.scmGalaxy.com Gallery The public gallery is good for openly shared code. You can also host private galleries and configure them locally. NuGet will check both locations for referenced packages… Private can be done: . Local folder based . Small version (no DB) . Full version (requires DB) www.scmGalaxy.com . Service (like MyGet) Visual Studio Integration (GUI - Nav) www.scmGalaxy.com Visual Studio Integration (GUI - Install) www.scmGalaxy.com Visual Studio Integration (GUI - Update) www.scmGalaxy.com Visual Studio Integration (GUI - Settings) www.scmGalaxy.com Visual Studio Integration (GUI - References) www.scmGalaxy.com VS (Package Management Console) Powershell with some loaded modules. Allowswww.scmGalaxy.com specific version installation as well as uninstall. Setup on Command Line http://docs.nuget.org/consume/installing-nuget www.scmGalaxy.com Powershell Commands Get-Package -ListAvailable Install-Package {packageid} Remove-Package {packageid} www.scmGalaxy.com Get into Nuget World nuget install automapper www.scmGalaxy.com From where package is coming? https://www.nuget.org/ www.scmGalaxy.com NuGet.exe (command line interface) nuget.exe help [feature (i.e. pack)] . Help lists commands and can be combined with a command to get info nuget.exe pack [PackageID].nuspec –version 1.1.0.0 . First the NuSpec is used to construct the package file via the „pack‟ stage nuget.exe push [PackageID].nupkg [API Key] –Source [Gallery] . Next the created NuPkg is loaded into the appropriate gallery via the „push‟ stage nuget.exe install [packages.config file OR package id] . When packages are in the gallery you can install them locally nuget.exe update [solution file OR project file] www.scmGalaxy.com . When packages are in the gallery you can update to latest version Ecosystem (flow) GitHub Jenkins CodeDrop . Versions Source . Versions . Versions Builds Files Deployments Developer NuGet www.scmGalaxy.com Server . Versions Dlls Ecosystem (dependencies) The CI solution is the single abstraction point to the CodeDrop which is only depended on by servers to be deployed Note the symmetry between the developer www.scmGalaxy.comand the CI solution Hosting Your Own Repository Folder / File share NuGet.Server package NuGet Gallery – www.github.com/nuget/nugetgallery MyGet – www.myget.org www.scmGalaxy.com Automate deployments Build results in .nupkg Octopus deploys to its tentacles Test tentacles Staging tentacles Production tentacles www.octopusdeploy.com www.scmGalaxy.com Create a packages http://reasoncodeexample.com/2012/04/29/creating-a-nuget-package/ www.scmGalaxy.com Hosting your own Repository in Nuget www.scmGalaxy.com Hosting your own Nuget Feed? www.scmGalaxy.com Limitation of www.scmGalaxy.com www.scmGalaxy.com www.scmGalaxy.com www.scmGalaxy.com www.scmGalaxy.com www.scmGalaxy.com www.scmGalaxy.com www.scmGalaxy.com Resources NuGet Source – http://nuget.codeplex.com/ NuGet Public Gallery - http://www.nuget.org/ MyGet – Private Gallery as a service - https://www.myget.org/ Author: Lawson Caudill – http://www.getthinktank.com www.scmGalaxy.com Where do I get it? VS Addin: NuGet Package Manager http://visualstudiogallery.msdn.microsoft.com/en-us/27077b70-9dad-4c64-adcf- c7cf6bc9970c Console App http://nuget.codeplex.com/ MsBuild Tasks http://nuget.codeplex.com/ NuGet Explorer http://nuget.codeplex.com/ Gallery Server http://galleryserver.codeplex.com/ www.scmGalaxy.com Appendix - Chocolatey NuGet developer library packages Chocolatey applications and tools packager “yum” or “apt-get” for Windows www.chocolatey.org www.scmGalaxy.com Appendix - Many, many, many Outercurve Foundation NuGet Project Nexus support for NuGet NuGet-based tools by Microsoft Glimpse Plug-ins NuGet Package Explorer ReSharper Plug-ins MyGet (NuGet-as-a-Service) Orchard Chocolatey NuGetMustHaves OctopusDeploy NuGetFeed RedGate Deployment Manager NuGetLatest SymbolSource NuGet server in Java ProGet (Inedo) NuGet Fight CoApp NuGit BoxStarter see SharpDevelop NuGet plug-in http://docs.nuget.org/docs/reference Xamarin NuGet plug-in /ecosystem TeamCity support for NuGet Artifactory support for NuGet www.scmGalaxy.com.