Este documento resume uma apresentação sobre NuGet, um sistema de gestão e distribuição de pacotes para .NET. Apresenta o que é NuGet, como pode ajudar no contexto empresarial, como construir e distribuir pacotes NuGet e como pode ser usado num cenário empresarial para criar e partilhar código e componentes entre equipas.
3. Nuno Gomes http://nunogomes.net
•.NET desde 2003
•Desenvolvimento de Infra-
Estrutura para Aplicações
Web nos domínios da
Banca e Seguros
4. Agenda
• O que é?
• Como me pode ajudar?
• Como construir pacotes NuGet?
• Como distribuir pacotes NuGet?
5. O que é o NuGet?
• Catálogo de software
Orientado ao desenvolvimento
Distribuido em pacotes
Sintaxe própria
Integração com o VisualStudio
6. O que é o NuGet?
1993 • Linux APT – Advanced Packaging Tool
• Comunidade Ruby – RubyGems
• Nubular (Nu) Project
• Projecto MS – Code name: Npack
• Nu Project + Projecto MS - NuPack
Out/2010 • NuPack NuGet
7. Como me pode ajudar?
Aceitar que existe um problema
Partilha de componentes de negócio
Partilha de boas práticas
Uniformização e reutilização
Agilizar processos especificos
8. Como me pode ajudar?
Informação centralizada
Código
Componentes Solução
Configuração Concreta
Automação
9. Como me pode ajudar?
Montar um Repositório Global
• Pasta partilhada
• Aplicação Servidor
Criar pacotes
• Componentes partilhados + configuração
• Melhores práticas
10. Como me pode ajudar?
Integrado com Integração Continua
• Pacotes criados no build
• Versionamento dos pacotes
• Publicação para o repositório de CI
11. Como construir pacotes NuGet?
• Adicionar referencias
• Adicionar Configuração
• Instalar assemblies no GAC
• Distribuir templates
• Distribuir comandos para realizar tarefas comuns
12. Como construir pacotes NuGet?
Criar *.nupkg com uma determinada estrutura:
• Content – pasta com todos os
conteudos a copiar
• Lib – pasta com assemblies
• Tools – pasta com powershell scripts e
executaveis
• Manifesto - *.nuspec
14. Como construir pacotes NuGet?
• Integração Build
• Incremento de Versões
• Publicação para o Repositório de CI
• Definição de workflow de publicação
• Publicação para o Repositorio Global
18. Citações...
“Any sufficiently advanced bug is
indistinguishable from a feature.”
Bruce Brown
“Part of the inhumanity of the computer
is that, once it is competently
programmed and working smoothly, it is
completely honest.”
Isaac Asimov
Pastas partilhadas cheias de assemblies ou installersConhecimento tribal (restrito a alguns grupo(s) ou equipa(s))Documentação espalhada (wikis, emails)Código extraido directamente das árvores de Source Control
Solução concreta em vez de Orientações, policies(?) ou Standards abstractos
Para componentes – pacotes manuaisPara Melhores Práticas – meta pacotes – pacotes que não têm assemblies nem código. São agregadores de pacotes:Ex: Instalar uma framework de testes + unit test + assertion
Repositório CI != Repositório Geral
Usar Package Manager ConsoleTudo isto pode ser feito em PowerShell