Como faço para habilitar o NuGet Package Restore no Visual Studio?

Há um post semelhante na pilha, mas isso não ajuda no meu problema, possivelmente porque estou usando o Visual Studio 2015.

Como faço para que a opção “Ativar restauração do pacote NuGet” apareça no VS2015?

Eu escolhi Arquivo> Novo Projeto e criei um Aplicativo da Web ASP.NET vazio . Eu estou procurando por esta opção de menu.

insira a descrição da imagem aqui

Devo mencionar que procurei por qualquer arquivo nuGet pré-existente na pasta do meu projeto e não há nenhum.

Demorou muito tempo, mas finalmente encontrei este documento sobre Migração de soluções MSBuild-Integrated para o Automatic Package Restore e consegui resolver o problema usando os methods descritos aqui.

  1. Remova o diretório da solução '.nuget' da solução
  2. Remova todas as referências a nuget.targets dos seus arquivos .vbproj ou .vbproj . Embora não seja oficialmente suportado, o documento é vinculado a um script do PowerShell se você tiver muitos projetos que precisam ser limpos. Eu editei manualmente o meu manualmente, então não posso dar nenhum feedback sobre minha experiência com ele.

Ao editar seus arquivos manualmente, veja o que você está procurando:

Arquivo de Solução (.sln)

 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{F4AEBB8B-A367-424E-8B14-F611C9667A85}" ProjectSection(SolutionItems) = preProject .nuget\NuGet.Config = .nuget\NuGet.Config .nuget\NuGet.exe = .nuget\NuGet.exe .nuget\NuGet.targets = .nuget\NuGet.targets EndProjectSection EndProject 

Arquivo de projeto (.csproj / .vbproj)

     This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.    

A Microsoft abandonou o suporte para o ‘Ativar a restauração de pacotes NuGet’ no VS2015 e você precisa fazer algumas alterações manuais para migrar soluções antigas ou adicionar o recurso a novas soluções. O novo recurso é descrito muito bem no NuGet Package Restore .

Há também um guia de migration para projetos existentes (como mencionado anteriormente) aqui: Guia de migration do NuGet

Ao atualizar:

  1. não exclua o diretório .nuget.
  2. Exclua os arquivos nuget.exe e nuget.targets.
  3. Deixe o nuget.config.
  4. Limpe cada um dos arquivos de projeto de qualquer referência aos alvos do NuGet manualmente. O roteiro de Powershell mencionado parecia causar mais danos do que benefícios.

Ao criar um novo projeto:

  1. Em sua solução do Visual Studio 2015, crie um Diretório de Soluções chamado .nuget.
  2. Crie um diretório real do diretório da solução (onde o arquivo .sln reside) e chame-o .nuget (observe que o diretório da solução não é o mesmo que o diretório real do sistema de arquivos, embora eles tenham o mesmo nome).
  3. Crie um arquivo no diretório .nuget chamado nuget.config.

  4. Adicione o ‘nuget.config’ ao diretório da solução criado na etapa 2.

  5. Coloque o seguinte texto no arquivo nuget.config:

Este arquivo de configuração permitirá que você consolide todos os seus pacotes em um único local para que você não tenha 20 cópias diferentes do mesmo pacote flutuando em seu sistema de arquivos. O caminho relativo será alterado dependendo da arquitetura do diretório de soluções, mas deve apontar para um diretório comum a todas as suas soluções.

Você precisa reiniciar o visual studio depois de executar a etapa 5. O Nuget não reconhecerá as alterações até que você o faça.

Finalmente, você pode ter que usar o Gerenciador de Pacotes Nuget para Soluções para desinstalar e reinstalar os pacotes. Eu não sei se isso foi um efeito colateral do script Powershell que eu corri ou apenas um método para colocar o NuGet de volta em marcha. Uma vez que eu fiz todos esses passos, minha arquitetura de construção complicada funcionou perfeitamente na redução de novos pacotes quando eu chequei projetos fora do TFVC.

Opcionalmente, você pode remover todas as pastas da pasta “packages” e selecionar “Manage NuGet Packages for Solution …”. Neste caso, o botão “Restaurar” aparece no Windows Pacotes NuGet.

Se você tiver algum problema ou estiver faltando algum pacote, basta clicar com o botão direito do mouse no seu projeto e selecionar ” Gerenciar Pacotes NuGet para Solução … “. Depois de clicar sobre isso, uma canvas será aberta, onde você verá uma barra de menu dizendo “Restaurar”: Restaurar

Clique nele e os pacotes necessários serão instalados automaticamente.
Eu acredito que isso é o que você está procurando, isso resolveu meus problemas.

Ao atualizar projetos com pacotes nuget do Vx20XX para o VS2015, você pode ter um problema com pacotes nuget.

Exemplo de mensagem de erro: Este projeto referencia pacote (s) NuGet que estão faltando neste computador. Ative o NuGet Package Restore para baixá-los.

Atualização 2016-02-06: Eu tinha um link para as informações, mas não funciona mais. Eu suspeito que um caminho recente resolveu o problema ???

Corrigi o meu problema ao escrever um pequeno programa que faz a restauração do pacote MSBuild-Integrated vs. Automatic Package Restore

Você pode baixar o executável da ferramenta aqui .

Por favor, deixe-me saber o resultado :-)!

insira a descrição da imagem aqui

Código como referência:

              Root directory of projects               using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Forms; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Xml; using System.Xml.Linq; using Application = System.Windows.Application; using MessageBox = System.Windows.MessageBox; ///  /// Applying recommanded modifications in section : "MSBuild-Integrated package restore vs. Automatic Package Restore" /// of : http://docs.nuget.org/Consume/Package-Restore/Migrating-to-Automatic-Package-Restore ///  namespace FixNuGetProblemsInVs2015 { ///  /// Interaction logic for MainWindow.xaml ///  public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DirProjects.Text = @"c:\prj"; // DirPackages.Text = @"C:\PRJ\NuGetPackages"; } private void BrowseDirProjectsOnClick(object sender, RoutedEventArgs e) { FolderBrowserDialog dlg = new FolderBrowserDialog(); dlg.SelectedPath = DirProjects.Text; if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { DirProjects.Text = dlg.SelectedPath; } } //private void BrowseDirPackagesOnClick(object sender, RoutedEventArgs e) //{ // FolderBrowserDialog dlg = new FolderBrowserDialog(); // dlg.SelectedPath = DirPackages.Text; // if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) // { // DirPackages.Text = dlg.SelectedPath; // } //} // private string _dirPackages; private void ButtonFixOnClick(object sender, RoutedEventArgs e) { DoJob(false); } private void ButtonRevertOnClick(object sender, RoutedEventArgs e) { DoJob(true); } private void DoJob(bool revert = false) { TxtLog.Text = ""; string dirProjects = DirProjects.Text; // _dirPackages = DirPackages.Text; if (!Directory.Exists(dirProjects)) { MessageBox.Show("Projects directory does not exists: " + dirProjects); return; } //if (!Directory.Exists(_dirPackages)) //{ // MessageBox.Show("Packages directory does not exists: " + _dirPackages); // return; //} RecurseFolder(dirProjects, revert); } private void RecurseFolder(string dirProjects, bool revert = false) { if (revert) { Revert(dirProjects); } else { FixFolder(dirProjects); } foreach (string subfolder in Directory.EnumerateDirectories(dirProjects)) { RecurseFolder(subfolder, revert); } } private const string BackupSuffix = ".fix_nuget_backup"; private void Revert(string dirProject) { foreach (string filename in Directory.EnumerateFiles(dirProject)) { if (filename.ToLower().EndsWith(BackupSuffix)) { string original = filename.Substring(0, filename.Length - BackupSuffix.Length); if (File.Exists(original)) { File.Delete(original); } File.Move(filename, original); Log("File reverted: " + filename + " ==> " + original); } } } private void FixFolder(string dirProject) { BackupFile(System.IO.Path.Combine(dirProject, "nuget.targets")); BackupFile(System.IO.Path.Combine(dirProject, "nuget.exe")); foreach (string filename in Directory.EnumerateFiles(dirProject)) { if (filename.ToLower().EndsWith(".csproj")) { FromProjectFileRemoveNugetTargets(filename); } } } private void BackupFile(string path) { if (File.Exists(path)) { string backup = path + BackupSuffix; if (!File.Exists(backup)) { File.Move(path, backup); Log("File backup: " + backup); } else { Log("Project has already a backup: " + backup); } } } private void FromProjectFileRemoveNugetTargets(string prjFilename) { XDocument xml = XDocument.Load(prjFilename); List elementsToRemove = new List(); foreach (XElement element in xml.Descendants()) { if (element.Name.LocalName == "Import") { var att = element.Attribute("Project"); if (att != null) { if (att.Value.Contains("NuGet.targets")) { elementsToRemove.Add(element); } } } if (element.Name.LocalName == "Target") { var att = element.Attribute("Name"); if (att != null && att.Value == "EnsureNuGetPackageBuildImports") { elementsToRemove.Add(element); } } } if (elementsToRemove.Count > 0) { elementsToRemove.ForEach(element => element.Remove()); BackupFile(prjFilename); xml.Save(prjFilename); Log("Project updated: " + prjFilename); } } private void Log(string msg) { TxtLog.Text += msg + "\r\n"; } } } 

Como já mencionado por Mike, não há opção ‘Ativar restauração de pacote NuGet’ no VS2015. Você terá que invocar o processo de restauração manualmente. Uma maneira legal – sem mexer em arquivos e diretórios – é usar o NuGet Package Management Console : Clique no campo ‘Início rápido’ (normalmente no canto superior direito), insira o console , abra o console de gerenciamento e insira o comando:

 Update-Package –reinstall 

Isso irá reinstalar todos os pacotes de todos os projetos em sua solução. Para especificar um único projeto, insira:

 Update-Package –reinstall -ProjectName MyProject 

Claro que isso é necessário apenas quando o botão Restoreàs vezes oferecido pelo VS2015 – não está disponível. Mais comandos de atualização úteis são listados e explicados aqui: https://docs.microsoft.com/pt-br/nuget/consume-packages/reinstalling-and-updating-packages

Vá em References no visual studio e veja quais pacotes estão faltando. Agora clique com o botão direito do mouse em Solution in Visual e clique em open folder no gerenciador de arquivos. Agora abra a pasta de pacotes e exclua a pasta de pacotes ausentes. Abra o visual studio e apenas construa a solução. todos os pacotes ausentes serão restaurados. Por favor marque isto como resposta se eu ajudei.

Eu suponho que para o projeto asp.net 4 estamos mudando para a restauração automática, então não há necessidade disso. Para projetos mais antigos, acho que é necessário um pouco de trabalho para converter.

http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore

Essa abordagem funcionou para mim:

  • Fechar VS2015
  • Abra a solução temporariamente no VS2013 e ative a restauração do pacote nuget clicando com o botão direito do mouse na solução (também fiz uma reconstrução, mas suspeito que isso não seja necessário).
  • Fechar VS2013
  • Reabra a solução no VS2015

Agora você também ativou a restauração do pacote nuget no VS2015.

Eu enfrentei o mesmo problema ao tentar construir o projeto de amostra gplus-quickstart-csharp-master .

Eu olhei de perto mensagem de erro e encontrei uma solução para superar este erro, espero que isso ajude.

  • Clique com o botão direito no arquivo da solução e abra no Windows Explorer.
  • Copie a pasta .nuget com NuGet.Config, NuGet.exe, NuGet.targets ( link de download ou simplesmente copie de outro projeto e substitua)
  • Tente reconstruir a solução.

Apreciar !!

A solução de Ivan Branets é essencialmente o que consertou isso para mim, mas mais alguns detalhes poderiam ser compartilhados.

No meu caso, eu estava no VS 2015 usando o Auto Package restore e o TFS . Isso é tudo bastante padrão.

O problema foi que, quando outro desenvolvedor tentou obter uma solução do TFS, alguns pacotes não foram totalmente restaurados. (Por que, eu não tenho certeza ainda.) Mas a pasta packages continha uma pasta para a referência e o pacote NuGet, mas ela não estava sendo expandida (digamos que uma pasta lib contendo um .dll estava faltando). lá, mas não exatamente certo conceito estava impedindo o pacote de ser restaurado.

Você reconhecerá isso porque a referência terá um ponto de exclamação amarelo sobre não ser resolvido.

Portanto, a solução de excluir a pasta nos pacotes remove o problema de bloqueio de restauração do pacote. Em seguida, você pode clicar com o botão direito do mouse no nível da solução superior para obter a opção de restaurar os pacotes e agora deve funcionar.

Fechar VS. Apague tudo na pasta de pacotes. Reabra sua solução. Clique com o botão direito do mouse no seu projeto, selecione ‘Gerenciar pacotes nuget …’. Você verá uma barra amarela na parte superior da janela ‘Gerenciador de Pacotes Nuget’, pedindo para restaurar os pacotes. Isso tem funcionado para mim.

Console do Gerenciador de Pacotes (Visual Studio, Ferramentas> Gerenciador de Pacotes NuGet> Console do Gerenciador de Pacotes): Execute o comando Update-Package -reinstall -ProjectName, onde está o nome do projeto afetado como aparece no Gerenciador de Soluções. Use Update-Package – reinstale-se para restaurar todos os pacotes na solução. Veja o pacote de atualização. Você também pode reinstalar um único pacote, se desejar.

de https://docs.microsoft.com/pt-pt/nuget/quickstart/restore

Também pode ser um resultado da execução do programa enquanto você está tentando instalar o pacote. está acinzentado se você tentar clicar enquanto o IIS embutido estiver sendo executado em segundo plano.

Eu tive que remover a pasta de pacotes fechar e reabrir (VS2015) solução. Eu não estava migrando e não tinha pacotes verificados no controle de origem. Tudo o que posso dizer é que algo ficou confuso e isso consertou.

Caso alguém encontre esse problema no Visual Studio 2017, verifique se o projeto está aberto pelo arquivo .sln e não pela pasta, já que o visual studio não selecionará as configurações se ele for aberto por pasta. Isso acontece por padrão se você estiver usando os serviços online do Visual Studio para git.

Eu usei msbuild /t:restore .

Meu problema era com o MSBuild Então eu segui o link do @Vinney Kelly : Migrando soluções MSBuild-Integrated para o Automatic Package Restore

e…

Isso funcionou LIKE A CHARM =]

MSBuild : use o msbuild /t:restore , que restaura os pacotes de pacotes listados no arquivo de projeto (somente PackageReference ). Disponível apenas no NuGet 4.x + e no MSBuild 15.1+, que estão incluídos no Visual Studio 2017 . nuget restore e o dotnet restore usam esse comando para projetos aplicáveis.

Ajudou-me através de Ferramentas >>> Gerenciador de Pacotes Nuget >>> Geral e depois opção de tick Permitir que o Nuget baixe o pacote que está faltando e verifique automaticamente a falta de pacotes durante a compilation no visual studio .

insira a descrição da imagem aqui

Ainda mais simples, adicione uma pasta .nuget à sua solução e os ‘Restore Nuget Packages’ aparecerão (sem ter certeza se o nuget.exe precisa estar presente para funcionar).