SlideShare una empresa de Scribd logo
1 de 40
NuGet
Usages & Implementation
 All the dlls are stored in a particular location
 All the projects add the reference to a DLL
 When a DLL is updated overwrites the previous version
 No Versioning all are 1.0.0.0
 Or just changed with releases
 Or nobody cares
How do we share dlls today?
 Find and add elmah.dll
 Find and add log4net.dll
 Find any other dependency
 Modify configuration
 Etc....
Adding references
 The binaries of the dependencies are stored in source control
 In order to be able to build every time
 Usually references GAC-ed assemblies
Binaries in src control
 Go to each project and remove the old
 Then add the new reference
 Or just don’t use versioning (only internal)
 But you force everyone to update!
Update dlls nightmare
 (wikipedia):A term for the frustration of the software users
who have installed software packages which have
dependencies on specific versions of other software packages.
Welcome to Dependency Hell
 Reinventing the wheel
 We don’t need that dependency
 “If they can do it, we can do it, but better”
Cause and Effect
 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.
Dependencies
 Replace them with NuGet packages
 Reduce overhead on VCS.
 Get from NuGet Repository.
 Have specific or latest version.
3rd parties don’t belong in your VCS
 NuGet feed is subject to change...
 PackageSource msbuild property to the rescue
 Now what...
 Host your own feed and mirror packages
 Or use Nexus for that  (Client 010 policy)
Problem!
 Feed structuring
 Scoped by quality: Build, QA, Production, …
 Scoped by audience: public, restricted access
 Other:
 Scoped by product version, milestone…
 Scoped by target platform
Organize your check-ins
 Continuous Integration (CI) is a development practice
that requires developers to integrate code into a
shared repository several times a day. Each check-in is
then verified by an automated build, allowing teams
to detect problems early.
 By integrating regularly, you can detect errors quickly,
and locate them more easily.
Continuous Integration
A typical CI pipeline
NuGet
 Versions Dlls
Some Repository system
 NuGet is the package manager solution for the Microsoft
development platform.
 Intended to solve the issues related to management of 3rd
party assembly dependencies
 Packages are zip archives
 Originally .NET, now anything
 Discovery, packages, dependencies, updates
 NuGet client tools provide the ability to produce and consume
packages.
 NuGet Gallery is a central package repository used by all
package authors and consumers.
What is NuGet
.NET is late to the party!
 Others have been doing package management for
decades
 Perl (CPAN.org)
 Linux (RPM/YUM/APT-GET/...)
 PHP (PEAR, Composer)
 Node (npm)
 Ruby (Gems)
 We can learn a great deal from these!
Supporting componentization
 Every project is a package
 Clearly identifyable
 Proper Semantic Versioning
 Every project becomes discoverable
 Nice description, release notes, ...
 Add it to a private feed so developers can find it
 Dependencies (can) stay out of source control
 Dependencies are versioned
 Think about your versioning! {semver.org}
 Always specify lowerbound
 Use a version range {lowerbound + upperbound} when versioning
of package you depend on is messed up
Semantic Versioning
 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
Guidance
 Package Integration & Integration Testing
 CI builds reflect output of source control input
 Same input always produces same output
Guidance
NuGet Components
C#C#
WCF Data
Services
Gallery
Server
NuGet
Core
VS Addin
Console
App
MsBuild
Tasks
Package
Explorer
 NuSpec
 Xml file containing the specification to be packaged
 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
Components
 <?xml version="1.0"?>
 <package >
 <metadata>
 <id>Package</id>
 <version>1.0.0</version>
 <authors>jhoonjhar.jodha</authors>
 <owners>jhoonjhar.jodha</owners>
 <licenseUrl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseUrl>
 <projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl>
 <iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl>
 <requireLicenseAcceptance>false</requireLicenseAcceptance>
 <description>Package description</description>
 <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
 <copyright>Copyright 2016</copyright>
 <tags>Tag1 Tag2</tags>
 <dependencies>
 <dependency id="SampleDependency" version="1.0" />
 </dependencies>
 </metadata>
 </package>
NuSpec File
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
NuPkg File
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)
 Service (like MyGet)
Visual Studio Integration (GUI - Nav)
Visual Studio Integration (GUI - Install)
Visual Studio Integration (GUI - Update)
Visual Studio Integration (GUI - Settings)
Visual Studio Integration (GUI - References)
When you add a library or tool, NuGet copies files to your
solution and automatically makes whatever changes are
needed in your project, such as adding references and
changing your configuration files
When you remove a library, NuGet removes files and
reverses whatever changes it made in your project so that no
clutter is left.
VS (Package Management Console)
Powershell with some
loaded modules.
Allows specific version
installation as well as
uninstall.
 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]
 When packages are in the gallery you can update to latest version
NuGet.exe (command line interface)
 Understand semantic versioning
 Develop components in isolation
 Careful interface design and versioning
 Unit test at least every public method
 Document all public symbols
Development Best Practices
 Automate push on release and documentation
 Automate labelling for traceability
 Source/symbol serving is your friend
 Version all the things! (if you wish)
DevOps Considerations
 NuGet = public feed
 No Privacy
 Intellectual property
 NuGet maintained by package authors
 Author removes v1.0.45 and you depend on it
 Bracking changes can impact your business.
 Spying threat / Information leaks
Issues with Nuget.org
 Folder / File share
 NuGet.Server package
 NuGet Gallery {or Orchard Gallery}
 MyGet
 Or third party pakcage mangement solutions placed in
enterprises (we are using Nexus).
Solutions
Demo
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/
Thank you
Share your feedback on meeting note.

Más contenido relacionado

La actualidad más candente

Introduction to package manager
Introduction to package managerIntroduction to package manager
Introduction to package manageryashobantabai
 
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)Per Henrik Lausten
 
Controlling Component Chaos with NuGet and Versioning
Controlling Component Chaos with NuGet and VersioningControlling Component Chaos with NuGet and Versioning
Controlling Component Chaos with NuGet and VersioningPerforce
 
Dockerizing your java development environment
Dockerizing your java development environmentDockerizing your java development environment
Dockerizing your java development environmentBuhake Sindi
 
Using nu get the way you should svcc
Using nu get the way you should   svccUsing nu get the way you should   svcc
Using nu get the way you should svccMaarten Balliauw
 
OSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating JenkinsOSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating JenkinsNETWAYS
 
Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at ScaleKris Buytaert
 
2014 land your-first_patch_neutron
2014 land your-first_patch_neutron2014 land your-first_patch_neutron
2014 land your-first_patch_neutronRossella Sblendido
 
JUC Europe 2015: Plugin Development with Gradle and Groovy
JUC Europe 2015: Plugin Development with Gradle and GroovyJUC Europe 2015: Plugin Development with Gradle and Groovy
JUC Europe 2015: Plugin Development with Gradle and GroovyCloudBees
 
Gitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeGitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeTeerapat Khunpech
 
ContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven InfrastructureContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven InfrastructureYury Tsarev
 
Using Git with Drupal
Using Git with DrupalUsing Git with Drupal
Using Git with DrupalRyan Cross
 
Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)Per Henrik Lausten
 
Pimp your jenkins platform with docker - Devops.com 2015/11
Pimp your jenkins platform with docker - Devops.com 2015/11Pimp your jenkins platform with docker - Devops.com 2015/11
Pimp your jenkins platform with docker - Devops.com 2015/11CloudBees
 
Building Good Containers for Python Applications
Building Good Containers for Python ApplicationsBuilding Good Containers for Python Applications
Building Good Containers for Python ApplicationsAll Things Open
 
Micronaut: A new way to build microservices
Micronaut: A new way to build microservicesMicronaut: A new way to build microservices
Micronaut: A new way to build microservicesLuram Archanjo
 
Uyuni Community Hours 27.11.2020
Uyuni Community Hours 27.11.2020Uyuni Community Hours 27.11.2020
Uyuni Community Hours 27.11.2020Uyuni Project
 
Introduction to Containers & Diving a little deeper into the benefits of Con...
 Introduction to Containers & Diving a little deeper into the benefits of Con... Introduction to Containers & Diving a little deeper into the benefits of Con...
Introduction to Containers & Diving a little deeper into the benefits of Con...Synergetics Learning and Cloud Consulting
 

La actualidad más candente (20)

Introduction to package manager
Introduction to package managerIntroduction to package manager
Introduction to package manager
 
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
 
Controlling Component Chaos with NuGet and Versioning
Controlling Component Chaos with NuGet and VersioningControlling Component Chaos with NuGet and Versioning
Controlling Component Chaos with NuGet and Versioning
 
Dockerizing your java development environment
Dockerizing your java development environmentDockerizing your java development environment
Dockerizing your java development environment
 
Using nu get the way you should svcc
Using nu get the way you should   svccUsing nu get the way you should   svcc
Using nu get the way you should svcc
 
OSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating JenkinsOSDC 2017 - Julien Pivotto - Automating Jenkins
OSDC 2017 - Julien Pivotto - Automating Jenkins
 
Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at Scale
 
2014 land your-first_patch_neutron
2014 land your-first_patch_neutron2014 land your-first_patch_neutron
2014 land your-first_patch_neutron
 
Docker openstack-2014
Docker openstack-2014Docker openstack-2014
Docker openstack-2014
 
Run automated tests in Docker
Run automated tests in DockerRun automated tests in Docker
Run automated tests in Docker
 
JUC Europe 2015: Plugin Development with Gradle and Groovy
JUC Europe 2015: Plugin Development with Gradle and GroovyJUC Europe 2015: Plugin Development with Gradle and Groovy
JUC Europe 2015: Plugin Development with Gradle and Groovy
 
Gitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeGitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTree
 
ContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven InfrastructureContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven Infrastructure
 
Using Git with Drupal
Using Git with DrupalUsing Git with Drupal
Using Git with Drupal
 
Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)
 
Pimp your jenkins platform with docker - Devops.com 2015/11
Pimp your jenkins platform with docker - Devops.com 2015/11Pimp your jenkins platform with docker - Devops.com 2015/11
Pimp your jenkins platform with docker - Devops.com 2015/11
 
Building Good Containers for Python Applications
Building Good Containers for Python ApplicationsBuilding Good Containers for Python Applications
Building Good Containers for Python Applications
 
Micronaut: A new way to build microservices
Micronaut: A new way to build microservicesMicronaut: A new way to build microservices
Micronaut: A new way to build microservices
 
Uyuni Community Hours 27.11.2020
Uyuni Community Hours 27.11.2020Uyuni Community Hours 27.11.2020
Uyuni Community Hours 27.11.2020
 
Introduction to Containers & Diving a little deeper into the benefits of Con...
 Introduction to Containers & Diving a little deeper into the benefits of Con... Introduction to Containers & Diving a little deeper into the benefits of Con...
Introduction to Containers & Diving a little deeper into the benefits of Con...
 

Destacado

Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Felipe Klerk Signorini
 
Running in the Cloud - First Belgian Azure project
Running in the Cloud - First Belgian Azure projectRunning in the Cloud - First Belgian Azure project
Running in the Cloud - First Belgian Azure projectMaarten Balliauw
 
Fun with ASP.NET MVC 3, MEF and NuGet (#comdaybe)
Fun with ASP.NET MVC 3, MEF and NuGet (#comdaybe)Fun with ASP.NET MVC 3, MEF and NuGet (#comdaybe)
Fun with ASP.NET MVC 3, MEF and NuGet (#comdaybe)Maarten Balliauw
 
NuGet 3.0 - Transitioning from OData to JSON-LD
NuGet 3.0 - Transitioning from OData to JSON-LDNuGet 3.0 - Transitioning from OData to JSON-LD
NuGet 3.0 - Transitioning from OData to JSON-LDJeff Handley
 
Design Thinking em Projetos de Engenharia de Software
Design Thinking em Projetos de Engenharia de Software 	Design Thinking em Projetos de Engenharia de Software
Design Thinking em Projetos de Engenharia de Software UFPA
 
Especificação de Requisitos de Software
Especificação de Requisitos de SoftwareEspecificação de Requisitos de Software
Especificação de Requisitos de SoftwareRalph Rassweiler
 
Gestion paquetes NuGet con Visual Studio Team Services y MyGet
Gestion paquetes NuGet con Visual Studio Team Services y MyGetGestion paquetes NuGet con Visual Studio Team Services y MyGet
Gestion paquetes NuGet con Visual Studio Team Services y MyGetLuis Fraile
 

Destacado (10)

Nuget
NugetNuget
Nuget
 
Computrace grc
Computrace grcComputrace grc
Computrace grc
 
Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016
 
Running in the Cloud - First Belgian Azure project
Running in the Cloud - First Belgian Azure projectRunning in the Cloud - First Belgian Azure project
Running in the Cloud - First Belgian Azure project
 
Fun with ASP.NET MVC 3, MEF and NuGet (#comdaybe)
Fun with ASP.NET MVC 3, MEF and NuGet (#comdaybe)Fun with ASP.NET MVC 3, MEF and NuGet (#comdaybe)
Fun with ASP.NET MVC 3, MEF and NuGet (#comdaybe)
 
NuGet vs Maven
NuGet vs MavenNuGet vs Maven
NuGet vs Maven
 
NuGet 3.0 - Transitioning from OData to JSON-LD
NuGet 3.0 - Transitioning from OData to JSON-LDNuGet 3.0 - Transitioning from OData to JSON-LD
NuGet 3.0 - Transitioning from OData to JSON-LD
 
Design Thinking em Projetos de Engenharia de Software
Design Thinking em Projetos de Engenharia de Software 	Design Thinking em Projetos de Engenharia de Software
Design Thinking em Projetos de Engenharia de Software
 
Especificação de Requisitos de Software
Especificação de Requisitos de SoftwareEspecificação de Requisitos de Software
Especificação de Requisitos de Software
 
Gestion paquetes NuGet con Visual Studio Team Services y MyGet
Gestion paquetes NuGet con Visual Studio Team Services y MyGetGestion paquetes NuGet con Visual Studio Team Services y MyGet
Gestion paquetes NuGet con Visual Studio Team Services y MyGet
 

Similar a Understanding NuGet implementation for Enterprises

Nuget is easier than you think and you should be using it as both a consumer ...
Nuget is easier than you think and you should be using it as both a consumer ...Nuget is easier than you think and you should be using it as both a consumer ...
Nuget is easier than you think and you should be using it as both a consumer ...Justin James
 
NuGet Packages Presentation (DoT NeT).pptx
NuGet Packages Presentation (DoT NeT).pptxNuGet Packages Presentation (DoT NeT).pptx
NuGet Packages Presentation (DoT NeT).pptxKnoldus Inc.
 
Organize your chickens: NuGet for the enterprise
Organize your chickens: NuGet for the enterpriseOrganize your chickens: NuGet for the enterprise
Organize your chickens: NuGet for the enterpriseMaarten Balliauw
 
NuGet beyond Hello World - DotNext Piter 2017
NuGet beyond Hello World - DotNext Piter 2017NuGet beyond Hello World - DotNext Piter 2017
NuGet beyond Hello World - DotNext Piter 2017Maarten Balliauw
 
Devops : Automate Your Infrastructure with Puppet
Devops : Automate Your Infrastructure with PuppetDevops : Automate Your Infrastructure with Puppet
Devops : Automate Your Infrastructure with PuppetEdureka!
 
Overview of Node JS
Overview of Node JSOverview of Node JS
Overview of Node JSJacob Nelson
 
Enhance your Agility with DevOps
Enhance your Agility with DevOpsEnhance your Agility with DevOps
Enhance your Agility with DevOpsEdureka!
 
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...Ajeet Singh Raina
 
The world of Docker and Kubernetes
The world of Docker and Kubernetes The world of Docker and Kubernetes
The world of Docker and Kubernetes vty
 
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...Andrey Karpov
 
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentEclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentDevOps.com
 
Maven 2 features
Maven 2 featuresMaven 2 features
Maven 2 featuresAngel Ruiz
 
Top 10 Best DevOps tools in 2020
Top 10 Best DevOps tools in 2020Top 10 Best DevOps tools in 2020
Top 10 Best DevOps tools in 2020prafulIQBusiness
 
[@NaukriEngineering] Docker 101
[@NaukriEngineering] Docker 101[@NaukriEngineering] Docker 101
[@NaukriEngineering] Docker 101Naukri.com
 
Mastering node.js, part 1 - introduction
Mastering node.js, part 1 - introductionMastering node.js, part 1 - introduction
Mastering node.js, part 1 - introductioncNguyn826690
 
PuppetConf 2017: What’s in the Box?!- Leveraging Puppet Enterprise & Docker- ...
PuppetConf 2017: What’s in the Box?!- Leveraging Puppet Enterprise & Docker- ...PuppetConf 2017: What’s in the Box?!- Leveraging Puppet Enterprise & Docker- ...
PuppetConf 2017: What’s in the Box?!- Leveraging Puppet Enterprise & Docker- ...Puppet
 

Similar a Understanding NuGet implementation for Enterprises (20)

Nuget is easier than you think and you should be using it as both a consumer ...
Nuget is easier than you think and you should be using it as both a consumer ...Nuget is easier than you think and you should be using it as both a consumer ...
Nuget is easier than you think and you should be using it as both a consumer ...
 
NuGet Packages Presentation (DoT NeT).pptx
NuGet Packages Presentation (DoT NeT).pptxNuGet Packages Presentation (DoT NeT).pptx
NuGet Packages Presentation (DoT NeT).pptx
 
Organize your chickens: NuGet for the enterprise
Organize your chickens: NuGet for the enterpriseOrganize your chickens: NuGet for the enterprise
Organize your chickens: NuGet for the enterprise
 
NuGet beyond Hello World - DotNext Piter 2017
NuGet beyond Hello World - DotNext Piter 2017NuGet beyond Hello World - DotNext Piter 2017
NuGet beyond Hello World - DotNext Piter 2017
 
Devops : Automate Your Infrastructure with Puppet
Devops : Automate Your Infrastructure with PuppetDevops : Automate Your Infrastructure with Puppet
Devops : Automate Your Infrastructure with Puppet
 
Overview of Node JS
Overview of Node JSOverview of Node JS
Overview of Node JS
 
Enhance your Agility with DevOps
Enhance your Agility with DevOpsEnhance your Agility with DevOps
Enhance your Agility with DevOps
 
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
 
The world of Docker and Kubernetes
The world of Docker and Kubernetes The world of Docker and Kubernetes
The world of Docker and Kubernetes
 
Docker In Brief
Docker In BriefDocker In Brief
Docker In Brief
 
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
 
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentEclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
 
Maven 2 features
Maven 2 featuresMaven 2 features
Maven 2 features
 
Top 10 Best DevOps tools in 2020
Top 10 Best DevOps tools in 2020Top 10 Best DevOps tools in 2020
Top 10 Best DevOps tools in 2020
 
[@NaukriEngineering] Docker 101
[@NaukriEngineering] Docker 101[@NaukriEngineering] Docker 101
[@NaukriEngineering] Docker 101
 
Docker dDessi november 2015
Docker dDessi november 2015Docker dDessi november 2015
Docker dDessi november 2015
 
Maven Introduction
Maven IntroductionMaven Introduction
Maven Introduction
 
Mastering node.js, part 1 - introduction
Mastering node.js, part 1 - introductionMastering node.js, part 1 - introduction
Mastering node.js, part 1 - introduction
 
PuppetConf 2017: What’s in the Box?!- Leveraging Puppet Enterprise & Docker- ...
PuppetConf 2017: What’s in the Box?!- Leveraging Puppet Enterprise & Docker- ...PuppetConf 2017: What’s in the Box?!- Leveraging Puppet Enterprise & Docker- ...
PuppetConf 2017: What’s in the Box?!- Leveraging Puppet Enterprise & Docker- ...
 
VS Code tools for docker
VS Code tools for dockerVS Code tools for docker
VS Code tools for docker
 

Último

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 

Último (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 

Understanding NuGet implementation for Enterprises

  • 2.  All the dlls are stored in a particular location  All the projects add the reference to a DLL  When a DLL is updated overwrites the previous version  No Versioning all are 1.0.0.0  Or just changed with releases  Or nobody cares How do we share dlls today?
  • 3.  Find and add elmah.dll  Find and add log4net.dll  Find any other dependency  Modify configuration  Etc.... Adding references
  • 4.  The binaries of the dependencies are stored in source control  In order to be able to build every time  Usually references GAC-ed assemblies Binaries in src control
  • 5.  Go to each project and remove the old  Then add the new reference  Or just don’t use versioning (only internal)  But you force everyone to update! Update dlls nightmare
  • 6.  (wikipedia):A term for the frustration of the software users who have installed software packages which have dependencies on specific versions of other software packages. Welcome to Dependency Hell
  • 7.  Reinventing the wheel  We don’t need that dependency  “If they can do it, we can do it, but better” Cause and Effect
  • 8.  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. Dependencies
  • 9.  Replace them with NuGet packages  Reduce overhead on VCS.  Get from NuGet Repository.  Have specific or latest version. 3rd parties don’t belong in your VCS
  • 10.  NuGet feed is subject to change...  PackageSource msbuild property to the rescue  Now what...  Host your own feed and mirror packages  Or use Nexus for that  (Client 010 policy) Problem!
  • 11.  Feed structuring  Scoped by quality: Build, QA, Production, …  Scoped by audience: public, restricted access  Other:  Scoped by product version, milestone…  Scoped by target platform Organize your check-ins
  • 12.  Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.  By integrating regularly, you can detect errors quickly, and locate them more easily. Continuous Integration
  • 13. A typical CI pipeline NuGet  Versions Dlls Some Repository system
  • 14.  NuGet is the package manager solution for the Microsoft development platform.  Intended to solve the issues related to management of 3rd party assembly dependencies  Packages are zip archives  Originally .NET, now anything  Discovery, packages, dependencies, updates  NuGet client tools provide the ability to produce and consume packages.  NuGet Gallery is a central package repository used by all package authors and consumers. What is NuGet
  • 15. .NET is late to the party!  Others have been doing package management for decades  Perl (CPAN.org)  Linux (RPM/YUM/APT-GET/...)  PHP (PEAR, Composer)  Node (npm)  Ruby (Gems)  We can learn a great deal from these!
  • 16. Supporting componentization  Every project is a package  Clearly identifyable  Proper Semantic Versioning  Every project becomes discoverable  Nice description, release notes, ...  Add it to a private feed so developers can find it  Dependencies (can) stay out of source control  Dependencies are versioned
  • 17.  Think about your versioning! {semver.org}  Always specify lowerbound  Use a version range {lowerbound + upperbound} when versioning of package you depend on is messed up Semantic Versioning
  • 18.  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 Guidance
  • 19.  Package Integration & Integration Testing  CI builds reflect output of source control input  Same input always produces same output Guidance
  • 20. NuGet Components C#C# WCF Data Services Gallery Server NuGet Core VS Addin Console App MsBuild Tasks Package Explorer
  • 21.  NuSpec  Xml file containing the specification to be packaged  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 Components
  • 22.  <?xml version="1.0"?>  <package >  <metadata>  <id>Package</id>  <version>1.0.0</version>  <authors>jhoonjhar.jodha</authors>  <owners>jhoonjhar.jodha</owners>  <licenseUrl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseUrl>  <projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl>  <iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl>  <requireLicenseAcceptance>false</requireLicenseAcceptance>  <description>Package description</description>  <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>  <copyright>Copyright 2016</copyright>  <tags>Tag1 Tag2</tags>  <dependencies>  <dependency id="SampleDependency" version="1.0" />  </dependencies>  </metadata>  </package> NuSpec File
  • 23. 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
  • 25. 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)  Service (like MyGet)
  • 27. Visual Studio Integration (GUI - Install)
  • 28. Visual Studio Integration (GUI - Update)
  • 29. Visual Studio Integration (GUI - Settings)
  • 30. Visual Studio Integration (GUI - References)
  • 31. When you add a library or tool, NuGet copies files to your solution and automatically makes whatever changes are needed in your project, such as adding references and changing your configuration files When you remove a library, NuGet removes files and reverses whatever changes it made in your project so that no clutter is left.
  • 32. VS (Package Management Console) Powershell with some loaded modules. Allows specific version installation as well as uninstall.
  • 33.  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]  When packages are in the gallery you can update to latest version NuGet.exe (command line interface)
  • 34.  Understand semantic versioning  Develop components in isolation  Careful interface design and versioning  Unit test at least every public method  Document all public symbols Development Best Practices
  • 35.  Automate push on release and documentation  Automate labelling for traceability  Source/symbol serving is your friend  Version all the things! (if you wish) DevOps Considerations
  • 36.  NuGet = public feed  No Privacy  Intellectual property  NuGet maintained by package authors  Author removes v1.0.45 and you depend on it  Bracking changes can impact your business.  Spying threat / Information leaks Issues with Nuget.org
  • 37.  Folder / File share  NuGet.Server package  NuGet Gallery {or Orchard Gallery}  MyGet  Or third party pakcage mangement solutions placed in enterprises (we are using Nexus). Solutions
  • 38. Demo
  • 39. 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/
  • 40. Thank you Share your feedback on meeting note.