devcoach.com
NuGet
.NET Package Management
Daniel Fisher | devcoach
devcoach.com
devcoach.com
BERTAUNG + SCHULUNG + PROJEKTE
• Themen
– Architektur & Technologie Evaluierung,
Performance Optimierung, Entwicklungs-
Unterstützung, Security Reviews, QA, POC &
Know-how-Transfer
• Technologien
– Services: WCF & WF
– Data: ADO.NET & EF
– Web: ASP.NET, MVC & Silverlight
• Kunden
– Versicherung, Finanzindustrie, Mittelstand,
Handel, Kommunikation, Softwarehersteller…
Und sie?
• Kontakt
– info@devcoach.com
devcoach.com
Daniel Fisher
• devcoach.com
– Mit-Gründer und Geschäftsführer
• Justcommunity.de
– Mit-Gründer und Vorstand
• nrwconf.de
– Mit-Gründer und Organisator
• netug-niederrhein.de
– Mit-Gründer und Leiter
• microsoft.com
– Community Leader & Insider (CLIP)
– Certified Professional Developer
– Business Platform Technology Advisor
• lennybacon.com
– Blog
• twitter.com
– @lennybacon
devcoach.com
Efficient Communication…
devcoach.com
devcoach.com
I want to use that library…
devcoach.com
devcoach.com
devcoach.com
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
devcoach.com
NuGet to the Rescue
devcoach.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!
devcoach.com
Of course it was inspired by…
• Linux RPM Package Manager
• Ruby Gems
• …
devcoach.com
And there are others
• OpenWrap
– http://www.openwrap.org/
• Bricks
– http://bricksproject.org/
• NGem
devcoach.com
NuGet Components
C#C#
WCF Data
Services
Gallery
Server
NuGet Core
VS Addin
Console
App
MsBuild
Tasks
Package
Explorer
devcoach.com
devcoach.com
Packages
• NuGet packages follow the packaging
specification…
– Like Office 2010 whatever-X formats
– …
devcoach.com
The dark side …
devcoach.com
Powershell Commands
• Get-Package -ListAvailable
• Install-Package {packageid}
• Remove-Package {packageid}
devcoach.com
devcoach.com
devcoach.com
Profiles
• NuGet_profile.ps1
devcoach.com
CREATING PACKAGES
devcoach.com
NuSpec
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>System.Web.Mvc</id>
<version>3.0</version>
<authors>Microsoft Corporation</authors>
<owners>Microsoft Corporation</owners>
<licenseUrl>http://www.asp.net/mvc</licenseUrl>
<projectUrl>http://www.asp.net/mvc</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>The Microsoft MVC Framework.</description>
<tags>ASP.NET MVC</tags>
</metadata>
</package>
devcoach.com
NuSpec
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>$id$</id>
<version>$version$</version>
<authors>$author$</authors>
<owners>$author$</owners>
<licenseUrl>http://www.asp.net/mvc</licenseUrl>
<projectUrl>http://www.asp.net/mvc</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<tags>ASP.NET MVC</tags>
</metadata>
</package>
[assembly: AssemblyTitle("MyLibrary")]
[assembly: AssemblyDescription("My cool library")]
[assembly: AssemblyCompany("Daniel Fisher")]
[assembly: AssemblyProduct("devcoach super tools")]
[assembly: AssemblyVersion("0.9.0.0")]
devcoach.com
devcoach.com
Console App
devcoach.com
Console Commands
• pack {package.nuspec}
• push {package.nupkg} {your_api_key} -src
{your_nuget_server}
devcoach.com
CREATING ADVANCED PACKAGES
devcoach.com
devcoach.com
Content
• /content
devcoach.com
devcoach.com
Dynamic Content
• File Extension: *.pp
• Template Parameters
– http://msdn.microsoft.com/en-
us/library/eehb4faa(v=vs.80).aspx
devcoach.com
devcoach.com
Transformation
devcoach.com
devcoach.com
Powershell
• Install.ps1
• Uninstall.ps1
• Init.ps1
devcoach.com
devcoach.com
devcoach.com
MsBuild Task
<?xml version="1.0" encoding="utf-8"?>
<Project
DefaultTargets="PackageBuild"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="NuPack.NuGet.NuPack" AssemblyFile="NuGet.MSBuild.dll" />
<ItemGroup>
<NuSpecFiles Include="..*.**.nuspec" />
</ItemGroup>
<Target Name="PackageBuild">
<NuGet.MSBuild.NuGet
Condition="Exists(@(NuSpecFiles))"
SpecFile="@(NuSpecFiles)"
PackageDir="..bin"
/>
</Target>
</Project>
devcoach.com
NuGet Gallery Server
• The server side repository for packages.
– Alternative to a local directory or UNC path.
• Provides an OData interface.
– WCF Data Service
– Atom PubSub-Feed
• http://www.odata.org
devcoach.com
NuGet Gallery Server
devcoach.com
devcoach.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/
devcoach.com
Thank You!
@lennybacon

2011 - Dotnet Information Day: NUGET

Editor's Notes

  • #3 Ich bin für die Firma devcoach unterwegs. Devcoach berät und begleitet Kunden in Projekten, entwickelt Software und plant Architekturen, vermittelt Technologiewissen und Praxis-Know-how in Schulungen und Coachings. Dabei fokussieren wir uns auf drei Themen: Services, Data & Web Darunter fallen die folgenden Technologien: Windows Communication Foundation – Microsofts einheitliche Programmier-Schnittstelle für verteilte Systeme Windows Workflow – Die graphische Implementierung technischer Abläufe ADO.NET – Die Datenzugriffs-Komponenten des .NET Frameworks Entity Framework – Microsofts strategische Datenzugriffstechnologie ASP.NET – Die Web-Anwendungs-Plattform des .NET Frameworks Silverlight – Das X-Browser-Kompatible Plug-In für Rich-Internet-Applications Unsere Kunden kommen aus verschiedensten Branchen von der One-Man-Show bis hin zum großen Konzern.
  • #4 Mein Name ist Daniel Fisher. Ich bin Mitgründer und Geschäftsführer der Firma devcoach. Sowie Mitgründer und Vorstand des gemeinnützigen Vereins Just Community e.V.. Dieser ist seit 2005 Veranstalter NRWConf, eines der größten Software-Entwickler-Community-Events in Deutschland. Ich bin Mitgründer und Leiter der .NET Developer User Group netug-niederrhein im Dreieck Düsseldorf-Wuppertal-Krefeld. Für meine Aktivitäten in und für die Community bin ich von Microsoft als Community Leader und Insider ausgezeichnet worden. Ich bin zertifiziert als Microsoft Certified Professional Developer für ASP.NET und Enterprise Applications. Seit Einigen Jahren bin ich Business Technology Platform Advisor für Microsoft und unterstütze die Teams bei Entscheidungen zu neuen Technologien. Mein Blog finden Sie unter lennybacon.com und können mir als @lennybacon auf Twitter folgen.