Compartilhar via


Notas de versão do NuGet 2.7

Notas de versão do NuGet 2.6.1 para WebMatrix | Notas de versão do NuGet 2.7.1

O NuGet 2.7 foi lançado em 22 de agosto de 2013.

Reconhecimento

Gostaríamos de agradecer aos seguintes colaboradores externos por suas contribuições significativas para o NuGet 2.7:

  1. [Mike Roth](http://www.codeplex.com/site/users/view/mxrss) (@mxrss)
    • Mostrar a URL da licença ao listar pacotes quando a verbosidade está definida como detalhada.
  2. [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph) (@adamralph)
    • [#1956](http://nuget.codeplex.com/workitem/1956) - Adicionar o atributo developmentDependency ao packages.config e usá-lo no comando pack para incluir apenas pacotes de runtime
  3. [Rafael Nicoletti](http://www.codeplex.com/site/users/view/tkrafael) (@tkrafael)
    • Evite a duplicação de chaves em Propriedades no comando de empacotamento do nuget.exe.
  4. [Ben Phegan](http://www.codeplex.com/site/users/view/benphegan) (@BenPhegan)
    • [#2610](http://nuget.codeplex.com/workitem/2610) - Aumentar o tamanho do cache do computador para 200.
  5. [Slava Trenogin](http://www.codeplex.com/site/users/view/derigel) (@derigel)
    • [#3217](http://nuget.codeplex.com/workitem/3217) - Corrigir a janela de diálogo do NuGet exibindo as atualizações na guia errada
    • Corrigir Project.TargetFramework, que pode ser nulo no ProjectManager
    • [#3248](http://nuget.codeplex.com/workitem/3248) - Correção de SharedPackageRepository FindPackage/FindPackagesById falhará em packageId inexistente
  6. [Kevin Boyle](http://www.codeplex.com/site/users/view/KevinBoyleRG) (@kevfromireland)
    • [#3234](http://nuget.codeplex.com/workitem/3234) – Habilitar o suporte para o projeto Nomad
  7. [Corin Blaikie](http://www.codeplex.com/site/users/view/corinblaikie) (@corinblaikie)
    • [#3252](http://nuget.codeplex.com/workitem/3252) - Correção de falha do comando push com o código de saída 0 quando o arquivo não existe.
  8. [Martin Veselý](http://www.codeplex.com/site/users/view/veselkamartin)
    • [#3226](http://nuget.codeplex.com/workitem/3226) - Corrigir o bug com o comando Add-BindingRedirect quando um projeto faz referência a um projeto de banco de dados.
  9. [Miroslav Bajtos](http://www.codeplex.com/site/users/view/miroslavbajtos) (@bajtos)
    • [#2891](http://nuget.codeplex.com/workitem/2891) - Corrija o bug do curinga de análise nuget.pack no atributo 'exclude' incorretamente.
  10. [Justin Dearing](http://www.codeplex.com/site/users/view/zippy1981) (@zippy1981)
    • [#3307](http://nuget.codeplex.com/workitem/3307) - Correção de bug NuGet.targets não passa $(Platform) para nuget.exe ao restaurar pacotes.
  11. [Brian Federici](http://www.codeplex.com/site/users/view/benerdin)
    • [#3294](http://nuget.codeplex.com/workitem/3294) - Corrige o bug no comando de pacote do nuget.exe que permitiria a adição de arquivos com o mesmo nome, mas com letras maiúsculas e minúsculas diferentes, o que eventualmente causaria a exceção "Item já existe".
  12. [Daniel Cazzulino](http://www.codeplex.com/site/users/view/dcazzulino) (@kzu)
    • [#2990](http://nuget.codeplex.com/workitem/2990) - Adicionar propriedade Version à classe NetPortableProfile.
  13. [David Simner](https://www.codeplex.com/site/users/view/DavidSimner)
    • [#3460](https://nuget.codeplex.com/workitem/3460) - Corrigir bug NullReferenceException se requireApiKey = true, mas o cabeçalho X-NUGET-APIKEY não está presente
  14. [Michael Friis](https://www.codeplex.com/site/users/view/friism) (@friism)
    • [#3278](https://nuget.codeplex.com/workitem/3278) - Corrige o arquivo de destinos NuGet.Build para que ele funcione corretamente no MonoDevelop
  15. [Pranav Krishnamoorthy](https://www.codeplex.com/site/users/view/pranavkm) (@pranav_km)
    • Melhorar o desempenho do comando Restaurar aumentando a paralelização

Recursos notáveis na versão

O NuGet 2.7 apresenta uma nova abordagem para a restauração de pacotes e também supera um grande obstáculo: o consentimento de restauração do pacote agora está ativado por padrão! A combinação da nova abordagem e do consentimento implícito simplificará drasticamente os cenários de restauração de pacotes.

Com as versões 2.0, 2.1, 2.2, 2.5 e 2.6 do NuGet, os usuários precisavam permitir explicitamente que o NuGet baixasse pacotes ausentes durante o build. Se esse consentimento não tivesse sido fornecido explicitamente, as soluções que haviam habilitado a restauração do pacote não seriam criadas até que o usuário tivesse concedido consentimento.

A partir do NuGet 2.7, o consentimento para restauração de pacotes é ATIVADO por padrão, enquanto permite que os usuários desativem explicitamente a restauração de pacotes, se assim desejarem, usando a caixa de seleção nas configurações do NuGet no Visual Studio. Essa alteração para consentimento implícito afeta o NuGet nos seguintes ambientes:

  • Visualização do Visual Studio 2013
  • Visual Studio 2012
  • Visual Studio 2010
  • Utilitário de Linha de Comando nuget.exe

Restauração automática de pacote no Visual Studio

A partir do NuGet 2.7, o NuGet baixará automaticamente pacotes ausentes durante o build no Visual Studio, mesmo que a restauração de pacote não tenha sido explicitamente habilitada para a solução. Essa Restauração Automática de Pacotes ocorre no Visual Studio quando você cria um projeto ou a solução, mas antes do MSBuild ser invocado. Isso gera alguns benefícios significativos:

  1. Não é necessário usar o gesto "Habilitar Restauração de Pacote NuGet" em sua solução
  2. Os projetos não precisam ser modificados e o NuGet não fará alterações no projeto para garantir que a restauração do pacote esteja habilitada
  3. Todos os pacotes NuGet, incluindo aqueles que incluíram importações do MSBuild para arquivos props/targets, serão restaurados antes do MSBuild ser invocado, garantindo que esses props/targets sejam corretamente reconhecidos durante a construção.

Para usar a Restauração Automática de Pacotes no Visual Studio, você só precisa executar uma ação (in):

  1. Não faça check-in na pasta packages

Há várias maneiras de omitir sua packages pasta do controle do código-fonte. Para obter mais informações, consulte o tópico Pacotes e Controle do Código-Fonte .

Embora todos os usuários sejam implicitamente optados pelo consentimento da Restauração Automática de Pacotes, você pode facilmente optar pelas configurações do Gerenciador de Pacotes no Visual Studio.

Configurações do Gerenciador de Pacotes

Restauração Simplificada de Pacotes pela Linha de Comando

O NuGet 2.7 apresenta um novo recurso para nuget.exe: nuget.exe restore

Este novo comando Restaurar permite que você restaure facilmente todos os pacotes para uma solução com um único comando, aceitando um arquivo ou pasta de solução como um argumento. Além disso, esse argumento está implícito quando há apenas uma única solução na pasta atual. Isso significa que todos os seguintes trabalhos são de uma pasta que contém um único arquivo de solução (MySolution.sln):

  1. nuget.exe restaurar MySolution.sln
  2. nuget.exe restauração.
  3. nuget.exe restore

O comando Restaurar abrirá o arquivo de solução e localizará todos os projetos dentro da solução. A partir daí, ele encontrará os packages.config arquivos de cada um dos projetos e restaurará todos os pacotes encontrados. Ele também restaura pacotes no nível da solução encontrados no .nuget\packages.config arquivo. Mais informações sobre o novo comando Restaurar podem ser encontradas na Referência de Linha de Comando.

O novo workflow de restauração de pacote

Estamos entusiasmados com essas alterações na Restauração de Pacotes, pois ela apresenta um novo fluxo de trabalho. Se você quiser omitir seus pacotes do controle do código-fonte, simplesmente não confirme o diretório packages. Os usuários do Visual Studio que abrirem e criarem a solução verão os pacotes restaurados automaticamente. Para builds de linha de comando, basta invocar nuget.exe restore antes de invocar msbuild. Você não precisa mais lembrar de usar o gesto "Habilitar Restauração de Pacote NuGet" em sua solução e não precisaremos mais modificar seus projetos para alterar o build. E isso também gera uma experiência muito melhorada para pacotes que incluem importações do MSBuild, especialmente para importações adicionadas por meio do recurso recente do NuGet para importação automática de arquivos de props/alvos da pasta \build.

Além do trabalho que fizemos a nós mesmos, também estamos trabalhando com alguns parceiros importantes para contornar essa nova abordagem. Ainda não temos linhas do tempo concretas para nenhum deles, mas cada parceiro está tão animado quanto estamos com a nova abordagem.

  • Team Foundation Service – Eles estão trabalhando para integrar a chamada aos nuget.exe restore cenários de build padrão.
  • Windows Azure Web Sites – Eles estão trabalhando para permitir que você envie seu projeto via push para o Azure e tenha nuget.exe restore chamado antes que seu site seja criado.
  • TeamCity – Eles estão atualizando o plug-in do Instalador do NuGet para o TeamCity 8.x
  • AppHarbor - Eles estão trabalhando para permitir que você envie seu repositório por push para AppHarbor e tenha nuget.exe restore chamado antes que sua solução seja compilada.

Com cada um dos parceiros acima, eles usariam sua própria cópia de nuget.exe e você não precisaria levar nuget.exe em sua solução.

Problemas conhecidos

Havia dois problemas conhecidos com o comando restore do nuget.exe na versão inicial 2.7, mas eles foram corrigidos em 09/06/2013 com uma atualização para o pacote NuGet.CommandLine. Essa atualização também está disponível no [NuGet 2.7 download page](https://nuget.codeplex.com/releases/view/107605) CodePlex. Executar nuget.exe update -self atualizará para a versão mais recente.

Os fixos foram:

  1. [New package restore doesn't work on Mono when using SLN file](https://nuget.codeplex.com/workitem/3596)
  2. [New package restore doesn't work with Wix projects](https://nuget.codeplex.com/workitem/3598)

Há também um problema conhecido com o novo fluxo de trabalho de restauração de pacotes pelo qual [Automatic Package Restore does not work for projects under a solution folder](https://nuget.codeplex.com/workitem/3625). Esse problema foi corrigido no NuGet 2.7.1.

Erros e avisos de redirecionamento de projeto e de compilação de atualização.

Muitas vezes, depois de redirecionar ou atualizar seu projeto, você descobre que alguns pacotes NuGet não estão funcionando corretamente. Infelizmente, não há nenhuma indicação disso e, em seguida, não há nenhuma orientação sobre como resolvê-lo. Com o NuGet 2.7, agora usamos alguns eventos do Visual Studio para reconhecer quando você redirecionou ou atualizou seu projeto de uma maneira que afeta seus pacotes NuGet instalados.

Se detectarmos que qualquer um de seus pacotes foi afetado pelo redirecionamento ou atualização, produziremos erros imediatos de compilação para informá-lo imediatamente. Além do erro imediato de build, também persistimos um sinalizador requireReinstallation="true" em seu arquivo packages.config para todos os pacotes que foram afetados pelo redirecionamento, e cada compilação subsequente no Visual Studio gerará avisos de compilação para esses pacotes.

Embora o NuGet não possa tomar medidas automáticas para reinstalar os pacotes afetados, esperamos que essa indicação e aviso o ajudem a descobrir quando você precisa reinstalar pacotes. Também estamos trabalhando na documentação de diretrizes de reinstalação de pacote para a qual essas mensagens de erro direcionam você.

Padrões de configuração do NuGet

Muitas empresas estão usando o NuGet internamente, mas tiveram dificuldade em orientar seus desenvolvedores a usar fontes de pacote internas em vez de nuget.org. O NuGet 2.7 apresenta um recurso Padrões de Configuração que permite que padrões de todo o computador sejam especificados para:

  1. Fontes de pacote habilitadas
  2. Fontes de pacote registradas, mas desabilitadas
  3. A origem padrão de push do nuget.exe

Cada um deles agora pode ser configurado em um arquivo localizado em %ProgramData%\NuGet\NuGetDefaults.Config. Se este arquivo de configuração especificar fontes de pacote, a fonte de pacote padrão do nuget.org não será registrada automaticamente, e as do `NuGetDefaults.Config` serão registradas em seu lugar.

Embora não seja necessário usar esse recurso, esperamos que as empresas implantem NuGetDefaults.Config arquivos usando a Política de Grupo.

Observe que esse recurso nunca fará com que uma fonte de pacote seja removida das configurações do NuGet de um desenvolvedor. Isso significa que, se o desenvolvedor já tiver usado o NuGet e, portanto, tiver a origem do pacote nuget.org registrada, ela não será removida após a criação de um NuGetDefaults.Config arquivo.

Consulte Os Padrões de Configuração do NuGet para obter mais informações sobre esse recurso.

Renomeando a origem do pacote padrão

O NuGet sempre registrou uma fonte padrão de pacotes chamada "Fonte de Pacotes Oficial do NuGet" que aponta para nuget.org. Esse nome era prolixo e também não especificava para onde ele estava realmente apontando. Para resolver esses dois problemas, renomeamos essa fonte de pacote para simplesmente "nuget.org" na interface do usuário. A URL da origem do pacote também foi alterada para incluir o prefixo "www". Depois de usar o NuGet 2.7, sua "fonte de pacote oficial do NuGet" existente será atualizada automaticamente para "nuget.org" como seu nome e "https://www.nuget.org/api/v2/" como sua URL.

Melhorias de desempenho

Fizemos alguma melhoria de desempenho na 2.7, o que produzirá menor volume de memória, menos uso de disco e instalação de pacote mais rápida. Também fizemos consultas mais inteligentes para feeds baseados em OData, o que reduzirá a carga útil.

Novas APIs de extensibilidade

Adicionamos algumas novas APIs aos nossos serviços de extensibilidade para preencher a lacuna de funcionalidades ausentes em versões anteriores.

IVsPackageInstallerServices

// Checks if a NuGet package with the specified Id and version is installed in the specified project.
bool IsPackageInstalledEx(Project project, string id, string versionString);

// Get the list of NuGet packages installed in the specified project.
IEnumerable<IVsPackageMetadata> GetInstalledPackages(Project project);

IVsPackageInstaller

// Installs one or more packages that exist on disk in a folder defined in the registry.
void InstallPackagesFromRegistryRepository(string keyName, bool isPreUnzipped, bool skipAssemblyReferences, Project project, IDictionary<string, string> packageVersions);

// Installs one or more packages that are embedded in a Visual Studio Extension Package.
void InstallPackagesFromVSExtensionRepository(string extensionId, bool isPreUnzipped, bool skipAssemblyReferences, Project project, IDictionary<string, string> packageVersions);

Dependências Exclusivas para Desenvolvimento

Esse recurso foi contribuido por Adam Ralph e permite que os autores do pacote declarem dependências que foram usadas apenas no momento do desenvolvimento e não exigem dependências de pacote. Ao adicionar um developmentDependency="true" atributo a um pacote, packages.confignuget.exe pack não incluirá mais esse pacote como uma dependência.

Suporte removido para o Visual Studio 2010 Express para Windows Phone

O novo modelo de restauração de pacote na 2.7 é implementado por um novo VSPackage que é diferente do VSPackage nuGet principal. Devido a um problema técnico, esse novo VSPackage não funciona corretamente no SKU do Visual Studio 2010 Express para Windows Phone , pois compartilhamos a mesma base de código com outros SKUs do Visual Studio com suporte. Portanto, a partir do NuGet 2.7, estamos descartando o suporte para o Visual Studio 2010 Express para Windows Phone da extensão publicada. O suporte para o Visual Studio 2010 Express para Web ainda está incluído na extensão primária publicada na Galeria de Extensões do Visual Studio.

Como não temos certeza de quantos desenvolvedores ainda estão usando o NuGet nessa versão/edição do Visual Studio, estamos publicando uma extensão separada do Visual Studio especificamente para esses usuários e publicando-a no CodePlex (em vez da Galeria de Extensões do Visual Studio). Não planejamos continuar mantendo essa extensão, mas se isso afetar você, informe-nos arquivando um problema no CodePlex.

Para baixar o Gerenciador de Pacotes NuGet (para Visual Studio 2010 Express para Windows Phone), visite a [NuGet 2.7 Downloads](https://nuget.codeplex.com/releases/view/107605) página.

Correções

Além desses recursos, essa versão do NuGet também inclui muitas outras correções de bug. Houve 97 problemas totais resolvidos na versão. Para obter uma lista completa de itens de trabalho corrigidos no NuGet 2.7, consulte o [NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.7&status=all).