SlideShare uma empresa Scribd logo
1 de 80
NuGet
Gerenciando dependências
@vquaiato
http://viniciusquaiato.com
vinicius.quaiato@gmail.com
Vinicius Quaiato
Esta palestra não é sobre isso.
Não vou te ensinar engraxar sapato!
Eu sou vegetariano. Não vou falar sobre
chickens!
Chega de papo furado
Fazer software não é algo simples
Cada vez que um projeto começa
precisamos aprender algo novo
Precisamos nos tornar especialistas em um
determinado negócio/ramo/atividade
Os detalhes de negócio geram
complexidades ao software
E isso é algo bom!
Algumas vezes precisamos conhecer a
equipe
E isso também gera complexidades ao
desenvolvimento do software
E como se não bastasse precisamos
escolher entre dezenas de ferramentas
Escolher significa, no mínimo, testar
E aí começam a surgir mais complexidades
1. Você precisa saber que algo existe
2. Você precisa saber onde conseguir
3. Você precisa obter
4. Você precisa saber o que realmente usar
5. Precisa adicionar ao seu projeto
Aí você lembra que esqueceu de algo...
Depois de alguns minutos/horas você
consegue “dominar” a coisa
Você só queria experimentar
Multiplique seu trabalho pelo número de
membros do seu time
Trabalhoso!
Multiplique pelo número de ferramentas que
vai experimentar
Novamente pelo número de membros do
time
Muito trabalhoso!
Agora pense que aquela tão esperada
feature foi adiciona em uma nova versão
Tudo se repete:
Saber que existe
Obter
Saber o que usar/o que mudou
Multiplica pelo time
Mais que muito trabalhoso!
Na melhor das hipóteses você terá 3 ou 4
ferramentas externas para lidar
Cada uma com 2 ou mais DLL
3 meses depois vocês descobrem que não
precisam de uma delas
E agora? Qual DLL eu removo?
Na maioria das vezes remove a metade
delas, e deixa o lixo lá
Ad infinitum
“Não sei...”
“O que é isso?”
“...mas deixa aí!”
O bem mais precioso de um projeto de
software, em última análise, é o software!
Precisamos cuidar bem dele!
O processo de lidar com as dependências,
que era muito trabalhoso não é mais!
Gerenciador de pacotes para plataforma
.NET
Free e open Source
E o principal objetivo é facilitar o processo
de incorporar bibliotecas terceiras
Tá Vinicius, chega de blá blá blá
Como esse tal de NuGet resolve todos os
problemas anteriores?
Apenas 1 comando!
Localiza, baixa, instala e configura
o/
Consigo saber quais dependências estão
instaladas no projeto
E descubro para que servem!
Apenas um comando para ver todas
atualizações disponíveis
Cuidado!
Atualizações podem ser desastrosas!
Para “atualizar” para uma versão anterior,
só removendo a mais nova
Por falar nisso...
Criar um um pacote é simples!
Por que criar um pacote?
Aquela “libzinha” que você criou e usa em N
projetos, faça dela um pacote!
É mais fácil do que pegar de uma pasta
compartilhada ou do Source Control.
Por sinal, seu build automatizado por ter
uma task para gerar um package do NuGet!
1. Criar um XML descritivo
2. Executar a ferramenta NuGet.exe
> NuGet.exe pack pacote.nuspec
Pronto!
Um arquivo .nupkg foi gerado
Um folder com arquivos .nupkg pode ser um
source para o NuGet
O repositório local da sua equipe, por
exemplo
O NuGet é animal!
Um projeto que ainda não é RTM e já está
bastante interessante
Projeto totalmente OSS, os fontes não estão
internos na MS!
Há muito para evoluir, mas já é animal!
Em resumo
Gerenciar as dependências é importante!
O NuGet vai te ajudar (e MUITO) com isso!
Valeu!
Infos
http://nuget.codeplex.com/
http://nuget.codeplex.com/documentation
http://haacked.com/archive/2010/10/06/introducing-nupack-package-
manager.aspx
http://viniciusquaiato.com/blog/tag/nuget/
http://www.hanselman.com/blog/IntroducingNuPackPackageManagem
entForNETAnotherPieceOfTheWebStack.aspx
@vquaiato
http://viniciusquaiato.com
vinicius.quaiato@gmail.com
Vinicius Quaiato

Mais conteúdo relacionado

Mais procurados

Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador Pragmatico
Leonardo Fernandes
 
Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013
Leandro Silva
 
Testes de software(feed_back)
Testes de software(feed_back)Testes de software(feed_back)
Testes de software(feed_back)
Ramon Tanoeiro
 

Mais procurados (19)

Nem só de cultura vive o DevOps - Campus Party
Nem só de cultura vive o DevOps - Campus PartyNem só de cultura vive o DevOps - Campus Party
Nem só de cultura vive o DevOps - Campus Party
 
Vídeo aulas com open sankoré
Vídeo aulas com open sankoréVídeo aulas com open sankoré
Vídeo aulas com open sankoré
 
Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador Pragmatico
 
Programação Orientada a Gambiarra
Programação Orientada a GambiarraProgramação Orientada a Gambiarra
Programação Orientada a Gambiarra
 
Desenvolvimento PHP com Vagrant - 7Masters PHP
Desenvolvimento PHP com Vagrant - 7Masters PHPDesenvolvimento PHP com Vagrant - 7Masters PHP
Desenvolvimento PHP com Vagrant - 7Masters PHP
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)
 
Desmistificando Design Patterns
Desmistificando Design PatternsDesmistificando Design Patterns
Desmistificando Design Patterns
 
Pablo
Pablo  Pablo
Pablo
 
Arquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudarArquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudar
 
Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?
 
Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013
 
Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo Real
 
Técnicas de frontend para aplicações django - PythonBrasil[9]
Técnicas de frontend para aplicações django  - PythonBrasil[9]Técnicas de frontend para aplicações django  - PythonBrasil[9]
Técnicas de frontend para aplicações django - PythonBrasil[9]
 
Lean para potencializar a qualidade no software
Lean para potencializar a qualidade no softwareLean para potencializar a qualidade no software
Lean para potencializar a qualidade no software
 
TDD com LEGO #PHPExperience2016
TDD com LEGO #PHPExperience2016TDD com LEGO #PHPExperience2016
TDD com LEGO #PHPExperience2016
 
Testes de software(feed_back)
Testes de software(feed_back)Testes de software(feed_back)
Testes de software(feed_back)
 
Coding Dojo em 10 Minutos!
Coding Dojo em 10 Minutos!Coding Dojo em 10 Minutos!
Coding Dojo em 10 Minutos!
 
Como ser um bom programador!
Como ser um bom programador!Como ser um bom programador!
Como ser um bom programador!
 
How to Study: From Zero to Hero
How to Study:  From Zero to HeroHow to Study:  From Zero to Hero
How to Study: From Zero to Hero
 

Destaque

RedGate .NET Reflector
RedGate .NET ReflectorRedGate .NET Reflector
RedGate .NET Reflector
Nuno Gomes
 
NuGet no ecossistema empresarial
NuGet no ecossistema empresarialNuGet no ecossistema empresarial
NuGet no ecossistema empresarial
Nuno Gomes
 
Web forms tagmapping
Web forms tagmappingWeb forms tagmapping
Web forms tagmapping
Nuno Gomes
 

Destaque (8)

NuGet no Contexto Empresarial
NuGet no Contexto EmpresarialNuGet no Contexto Empresarial
NuGet no Contexto Empresarial
 
RedGate .NET Reflector
RedGate .NET ReflectorRedGate .NET Reflector
RedGate .NET Reflector
 
NuGet no ecossistema empresarial
NuGet no ecossistema empresarialNuGet no ecossistema empresarial
NuGet no ecossistema empresarial
 
Web forms tagmapping
Web forms tagmappingWeb forms tagmapping
Web forms tagmapping
 
10 Insightful Quotes On Designing A Better Customer Experience
10 Insightful Quotes On Designing A Better Customer Experience10 Insightful Quotes On Designing A Better Customer Experience
10 Insightful Quotes On Designing A Better Customer Experience
 
How to Build a Dynamic Social Media Plan
How to Build a Dynamic Social Media PlanHow to Build a Dynamic Social Media Plan
How to Build a Dynamic Social Media Plan
 
Learn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionLearn BEM: CSS Naming Convention
Learn BEM: CSS Naming Convention
 
SEO: Getting Personal
SEO: Getting PersonalSEO: Getting Personal
SEO: Getting Personal
 

Semelhante a NuGet - Gerenciando dependências em .NET

DevOps - Como remover barreiras para a adoção?
DevOps - Como remover barreiras para a adoção?DevOps - Como remover barreiras para a adoção?
DevOps - Como remover barreiras para a adoção?
Mateus Prado
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Gabriel Rubens
 

Semelhante a NuGet - Gerenciando dependências em .NET (20)

Debugging node
Debugging nodeDebugging node
Debugging node
 
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian FerrariDrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
 
C:\Fakepath\Manual Antivirus
C:\Fakepath\Manual AntivirusC:\Fakepath\Manual Antivirus
C:\Fakepath\Manual Antivirus
 
DevOps Primeiros Passos
DevOps Primeiros PassosDevOps Primeiros Passos
DevOps Primeiros Passos
 
Pessoas Ou Processos
Pessoas Ou ProcessosPessoas Ou Processos
Pessoas Ou Processos
 
IFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsIFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOps
 
Como instalar tudo em ubuntu
Como instalar tudo em ubuntuComo instalar tudo em ubuntu
Como instalar tudo em ubuntu
 
Ebook logica-de-programacao-para-iniciantes
Ebook logica-de-programacao-para-iniciantesEbook logica-de-programacao-para-iniciantes
Ebook logica-de-programacao-para-iniciantes
 
Vamos falar de DevOps?
Vamos falar de DevOps?Vamos falar de DevOps?
Vamos falar de DevOps?
 
Como eu aprendi que testar software é importante?
Como eu aprendi que testar software é importante?Como eu aprendi que testar software é importante?
Como eu aprendi que testar software é importante?
 
TDC 2015 - Torne-se um programador melhor
TDC 2015 - Torne-se um  programador melhorTDC 2015 - Torne-se um  programador melhor
TDC 2015 - Torne-se um programador melhor
 
DevOps - Como remover barreiras para a adoção?
DevOps - Como remover barreiras para a adoção?DevOps - Como remover barreiras para a adoção?
DevOps - Como remover barreiras para a adoção?
 
Esqueça a linguagem e vire um programador de verdade
Esqueça a linguagem e vire um programador de verdadeEsqueça a linguagem e vire um programador de verdade
Esqueça a linguagem e vire um programador de verdade
 
Dicas Para Aumentar o Desempenho do Windows
Dicas Para Aumentar o Desempenho do WindowsDicas Para Aumentar o Desempenho do Windows
Dicas Para Aumentar o Desempenho do Windows
 
Ferramentas gratuitas para criar apresentações online
Ferramentas gratuitas para criar apresentações onlineFerramentas gratuitas para criar apresentações online
Ferramentas gratuitas para criar apresentações online
 
Engenharia de software
Engenharia de softwareEngenharia de software
Engenharia de software
 
Lance seu produto - não, você não precisa "programar" para isso!
Lance seu produto - não, você não precisa "programar" para isso!Lance seu produto - não, você não precisa "programar" para isso!
Lance seu produto - não, você não precisa "programar" para isso!
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
titulo
titulotitulo
titulo
 

Mais de Vinicius Quaiato

Mais de Vinicius Quaiato (20)

Me interessei por Xamarin, e agora?
Me interessei por Xamarin, e agora?Me interessei por Xamarin, e agora?
Me interessei por Xamarin, e agora?
 
Throughput, escalabilidade e distribuição global com Cosmos DB
Throughput, escalabilidade e distribuição global com Cosmos DBThroughput, escalabilidade e distribuição global com Cosmos DB
Throughput, escalabilidade e distribuição global com Cosmos DB
 
Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to Xamarin
 
Meetup Delivering Software - Microsoft Build 2017
Meetup Delivering Software - Microsoft Build 2017Meetup Delivering Software - Microsoft Build 2017
Meetup Delivering Software - Microsoft Build 2017
 
Microsoft loves open source
Microsoft loves open sourceMicrosoft loves open source
Microsoft loves open source
 
Testes de A a Z (em 30 minutos)
Testes de A a Z (em 30 minutos)Testes de A a Z (em 30 minutos)
Testes de A a Z (em 30 minutos)
 
IdentityServer 4
IdentityServer 4IdentityServer 4
IdentityServer 4
 
Azure WebJobs
Azure WebJobsAzure WebJobs
Azure WebJobs
 
Soluções escaláveis com Microsoft Orleans e Windows Azure
Soluções escaláveis com Microsoft Orleans e Windows AzureSoluções escaláveis com Microsoft Orleans e Windows Azure
Soluções escaláveis com Microsoft Orleans e Windows Azure
 
Functional programming
Functional programmingFunctional programming
Functional programming
 
Universos Paralelos (saindo da zona de conforto)
Universos Paralelos (saindo da zona de conforto)Universos Paralelos (saindo da zona de conforto)
Universos Paralelos (saindo da zona de conforto)
 
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius QuaiatoArquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
 
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius QuaiatoArquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
 
Orientacao a objetos e design patterns - Secomp Londrina
Orientacao a objetos e design patterns - Secomp LondrinaOrientacao a objetos e design patterns - Secomp Londrina
Orientacao a objetos e design patterns - Secomp Londrina
 
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
 
Patterns para Windows Azure e Cloud Computing
Patterns para Windows Azure e Cloud ComputingPatterns para Windows Azure e Cloud Computing
Patterns para Windows Azure e Cloud Computing
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Windows Phone 7 & Windows Azure
Windows Phone 7 & Windows AzureWindows Phone 7 & Windows Azure
Windows Phone 7 & Windows Azure
 
Mono - .NET além do Windows
Mono - .NET além do WindowsMono - .NET além do Windows
Mono - .NET além do Windows
 
Mono - .NET além do Windows
Mono - .NET além do WindowsMono - .NET além do Windows
Mono - .NET além do Windows
 

Último

Último (8)

Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

NuGet - Gerenciando dependências em .NET