NuGet is evolving to be much more than a Visual Studio extension used only for ASP.NET applications. Come see how NuGet can be used cross-platform and in new scenarios.
6. jeffhandley.com
@jeffhandley
jeff.handley@microsoft.com
• 1993: In Airborne with Seth Green and Jack Black
• 1994: Started writing code
• 1995: Started full-time in the industry as a tester
• Developed tiny, small, medium, large, and huge apps for 12½ years
• Worked for tiny, small, and medium development shops
• 2008: Joined Microsoft to work on RIA Services (eventually becoming development lead)
• 2011: Joined the NuGet team in September
• 2013: Development Lead for NuGet, the NuGet Gallery, and RIA Services
Yes, I like Nine Inch Nails
7. Segway, photo by oskay
http://blog.hansdezwart.info/2008/10/28/gaining-authority-by-riding-a-segway/
9. NuGet’s CoreTeam: September 2011
All Members Part-Time on NuGet
• Phil Haack (pm)
• Luan “dotnetjunky” Nguyen (dev)
• Pranav Krishnamoorthy (dev)
• Matthew Osborn (dev)
• Alex Dion (test)
• Drew Miller (test lead / gallery dev)
10. NuGet’s 2 ½-year History1/ 13/ 2011
1.0
2/ 12/ 2011
1.1
3/ 30/ 2011
1.2
4/ 25/ 2011
1.3
6/ 17/ 2011
1.4 8/ 30/ 2011
1.5
12/ 13/ 2011
1.6
Semantic
Version
Support
(Prerelease)
Package Restore
Integrated
Preinstalled
Packages
(Project Templates)
Private Feeds
Solution-Level
Package
Management
Package
Visualizer
Package Cache
Symbol Server
Integration
NuGet.exe and VS
Share Config
WiX+ .NET Micro
Framework
Profiles
GAC
References
Introduced
with
ASP.NET
MVC3
and
Web Pages v1
12/ 5/ 2011
New
NuGet.org
Deployed
4/ 4/ 2012
1.7
5/ 23/ 2012
1.8 6/ 19/ 2012
2.0
10/ 4/ 2012
2.1 12/ 12/ 2012
2.2
2/ 15/ 2013
2.2.1 4/ 25/ 2013
2.5
6/ 26/ 2013
2.6
Networking
Bug Fixes
Improved
Source Control
Integration
Satellite
Package
Support
VaryAll
Items by
Target
Framework
Portable
Class Library
Support
Hierarchical
Configuration
Specifying
Packages Folder
Location
VS 2012
Quick Launch
Specify Content
Target Folder
Localization
Refresh
Multi-Repository
Preinstalled
Packages
build folder
C++ Support
Mono/ Xamarin Support
(iOS/ Android/ Mac)
Overwrite Content
Update All
8/ 22/ 2012
In the box
with
Visual Studio
2012 RTM
4/ 4/ 2013
In the box
with
VS 2012
Update 2
In the box
with
VS 2013 Preview
XDTTransforms
Machine-Wide
Config
11. NuGet’s CoreTeam: July 2013
All Members Full-Time on NuGet
Client Crew
• Luan “dotnetjunky” Nguyen (dev)
• DeepakVerma (test)
• Deepak Aravindakshan (dev)
• Dan Liu (test)
• Fei Ling (dev)
Gallery Crew
• Andrew Nurse (dev)
• Bhuva Krishnamurthi (test)
• Tim Lovell-Smith (dev)
• Clay Compton (test)
• JohnTaylor (dev)
Howard Dierking Jeff Handley Ranjini Mathrubootham
(pm) (dev lead) (test lead)
12. What we do
Client Crew
• NuGetVisual Studio Extension
• http://nuget.codeplex.com
• NuGet WebMatrix Extension
• NuGet Command-Line (nuget.exe)
• NuGet Package Explorer
(http://npe.codeplex.com)
• NuGet Packages
• NuGet.Core
• NuGet.Server
• NuGet.VisualStudio
Gallery Crew
• NuGet Gallery
• http://nuget.org
• http://github.com/nuget/nugetgallery
• NuGet Docs
• http://docs.nuget.org
• http://github.com/nuget/nugetdocs
• Developer Operations
• 1-week rotations
• Monitoring and user support
16. Cost of reaching critical mass
• Meeting Microsoft’s tenets for shipping withVisual Studio
• Package Restore consent requirement
• Fulfilling requests from other Microsoft teams
• Earning big bets from other products while avoiding “death by success”
• Adapting to changes inVisual Studio and project systems
• Partner team and release vehicle test passes
• Aligning toVisual Studio ship schedules
• Occasionally going dark while integrating withVisual Studio
• Working within a Microsoft private fork of NuGet
20. NuGet 2.7
Late Summer 2013
• Automatic Package Restore inVS
• Add ‘Restore’ command to nuget.exe
• Package Restore Consent ON BY DEFAULT!
• Group Policy control over default package sources
• Omit development-only dependencies when packing (Adam Ralph)
• Support XNA forWindows Phone
• Support pre-installed packages outside ofVSTemplates
• Build errors/warnings for packages that need reinstallation
22. Discovery
• Context-sensitive enumeration and search
• Packages recently installed directly into the current target framework
• Statistics and reports for package authors and consumers
• Editable package metadata
• Package discovery through graphs
• Follow packages, owners, and users to generate custom feeds
• OAuth and authentication throughVisual Studio’s sign in
23. Trust
• Organizations or team accounts
• Owner reputation
• Friendly license names and filters
• Feeds for owners’ packages and followed packages
• Signed packages?
26. Incompatibility
• Create a system for reporting package incompatibilities
• Incompatibilities would be checked before package installation
• Warning you about the risk, not preventing you from doing your work
• “Stop trying to be clever and get out of my way!”
• Also works for packages that aren’t dependencies of one another
27. API
• RESTful API v3
• For use by the NuGet clients
• For use by ecosystem projects
• OData will be eventually consistent
28. Installation
<NuGetPackageReference id=“Glimpse.Mvc4” version=“1.3.2” source=“nuget.org” />
<NuGetPackageReference project=“MyOrg.CommonExtensions” />
• Minimize modifications to the project file
• Resolve references at build time for better retargeting and multi-targeting
• Treat direct installs differently from dependencies
• Source-specific updates and restores
• Global package installations (important for native)
• nuget.exe install / nuget.exe uninstall (will require new functionality from XBuild)
• Replace PowerShell with Roslyn (install.csx/uninstall.csx)
29. Build
• NuGet packages as a natural part of build
• NuGet packages replace assemblies as the natural unit of reference
• Will require deeper integration with MSBuild and XBuild
33. Evolution of NuGet
• Ensure great package discovery at 100,000+ packages
• Establish trust relationships between package authors and consumers
• Minimize package installation constraints, while raising incompatibility awareness
• Create a RESTful API for improved ecosystem growth
• Change package installation to assume NuGet ubiquity but maintain portability
• Move logic from installation to build to adapt to project changes
• Increase our openness
• Engage our cross-platform partners, contributors, and users
• Capitalize onVisual Studio integration and support, but don’t require it
34. Q & A
Get some stickers
@jeffhandley
jeffhandley.com
jeff.handley@microsoft.com
Editor's Notes
nuget.org package source
“Microsoft and .NET” package source
Machine-wide (and Group Policy) control over package sources