Como habilito a Restauração de Pacotes NuGet no Visual Studio?

272

Há uma postagem 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 Web ASP.NET vazio . Estou procurando esta opção de menu.

insira a descrição da imagem aqui

Devo mencionar que procurei arquivos nuGet pré-existentes na minha pasta do projeto e não há nenhum.

Dan Beaulieu
fonte
4
Verifique se você está tentando fazer isso na sua solução e não no projeto da Web. Por padrão, a solução não é exibido quando há apenas um projeto
JConstantine
1
Sim, esse é definitivamente um erro fácil de cometer, mas verifiquei a solução, acho que pode estar relacionada a 2015. A opção Ativar está disponível no VS2013 quando sigo as mesmas etapas.
Dan Beaulieu
2
O mesmo aqui. Até tentei excluir a pasta .nuget, que reativa a opção Ativar restauração do pacote NuGet no VS 2013, mas ainda não há dados. Estou tentando abrir um aplicativo existente MVC que foi criado em VS 2013.
Vinney Kelly
4
@justanotherdev Seria útil se você fornecesse uma referência ao novo fluxo de trabalho para tornar seu comentário um pouco mais produtivo.
Avantprime
1
Eu não vi o artigo de David Ebbo referenciado por oligofren, então apenas abri os arquivos sln & csproj no Notepad ++ e excluí as seções que ele ilustrou. Eu tinha a solução aberta no VS2015 e, depois de salvar os arquivos, o VS solicitou que eu os recarregasse e minhas referências de solução agora estão boas e minha solução é compilada. Muito obrigado, Vinney!
Rich Ward

Respostas:

248

Demorou muito tempo, mas finalmente encontrei este documento sobre a migração de soluções integradas ao MSBuild para a restauração automática de pacotes e consegui resolver o problema usando os métodos descritos aqui.

  1. Remova o '.nuget'diretório da solução junto da solução
  2. Remova todas as referências nuget.targetsdos seus arquivos .csprojou .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, para que eu não possa dar nenhum feedback sobre minha experiência com ele.

Ao editar seus arquivos manualmente, eis o que você estará 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)

  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>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}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
  </Target>
Vinney Kelly
fonte
3
Estou totalmente faltando alguma coisa aqui. Quando uso esse método, recebo um monte de pacotes instalados em todas as soluções que tenho. Eu tenho uma solução com 10 pacotes e outra solução com exatamente os mesmos pacotes: dois diretórios diferentes são criados, cada um contendo os 10 pacotes. Usando esse método, como você consolida todos os seus pacotes em um único diretório (como o antigo método VS2013 permite ao editar o arquivo NuGet.Config)?
Quarkly 3/08/15
Não encontra uma pasta .nuget? Vá verificar as soluções sobre a exclusão de pastas na pasta packages. É possível que seu pacote esteja meio restaurado e esse lixo esteja impedindo a restauração total.
5135 Greg Greg
De fato, essa era a solução. Além disso, adicionei "restauração de nuget" antes de começar a compilar o projeto. Os pacotes nuget são baixados automaticamente e a construção do projeto funciona bem depois disso.
TarmoPikaro
5
Para economizar um pouco de tempo, o script a ser executado no repositório GitHub mencionado por @VinneyKelly é migrateToAutomaticPackageRestore.ps1, sua mágica, funciona!
Riga
60

A Microsoft abandonou o suporte à 'Ativar restauração do pacote 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 migração para projetos existentes (como mencionado anteriormente) aqui: Guia de Migração 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 manualmente cada um dos arquivos do projeto de qualquer referência aos destinos do NuGet. O script do Powershell mencionado parecia causar mais danos do que benefícios.

Ao criar um novo projeto:

  1. Na 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 de .nuget (observe que o diretório da solução não é o mesmo que o diretório real do sistema de arquivos, mesmo tendo 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:

    <?xml version="1.0" encoding="utf-8"?> <configuration> <config> <add key="repositorypath" value="$\..\..\..\..\Packages" /> </config> <solution> <add key="disableSourceControlIntegration" value="true" /> </solution> </configuration>

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

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

Por fim, pode ser necessário usar o 'Nuget Package Manager for Solutions' para desinstalar e reinstalar os pacotes. Não sei se esse foi um efeito colateral do script do Powershell que eu executei ou apenas um método para ativar o NuGet novamente. Depois de executar todas essas etapas, minha arquitetura de compilação complicada funcionou perfeitamente para derrubar novos pacotes quando fiz o check-out de projetos do TFVC.

Quarkly
fonte
1
Por que excluir o arquivo nuget.targets, receberei uma compilação consistente quando está faltando?
Frode Nilsen
1
Os destinos parecem estar integrados ao IDE agora, bem como a função que o 'nugget.exe' costumava fornecer. A única coisa que você ainda precisa é da configuração.
Quarkly
1
Além das etapas mencionadas por DRAirey, eu tinha que fazer o seguinte: 1) Em vez de $ \ .. \ .. \ .. \ .. \ Packages, usado ../../ (convenção de caminho pai do Windows, não $ no início 2) Salve a solução, feche e reabra para que o nuget.config seja lido e honrado pela instalação de pacotes
Sudhanshu Mishra
Isso ajudou no meu novo projeto do VS2015, em que comprometi o dir de pacotes e outros membros da equipe não puderam ser reconstruídos devido às dependências do NuGet.
Azec-pdx 21/12/2015
1
Você precisa reiniciar o visual studio após executar a etapa 5. O Nuget não reconhecerá as alterações até que você o faça.
Barry Colebank Jr
35

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

Ivan Branets
fonte
1
Tente fechar e reabrir a janela de pacotes do NuGet depois de remover as pastas da pasta "packages".
perfil completo de Ivan Branets
6
+1 Isso funcionou para mim, observe que o botão de restauração aparece na parte superior da janela, logo abaixo da guia. Diz: "Alguns pacotes NuGet estão ausentes nesta solução. Clique para restaurar a partir das fontes de pacotes on-line".
quer
Tão simples e fácil .. isso funcionou para mim .. Acho que isso deve ser mais votado resposta :)
Nirman
Tão simples e fácil. Essa deve ser a resposta.
Axel
Não seria uma boa ideia adicionar esta pasta ao arquivo .gitignore?
Axel
26

Como já mencionado por Mike, não há opção 'Ativar restauração do pacote NuGet' no VS2015. Você precisará chamar o processo de restauração manualmente. Uma boa maneira - sem mexer com arquivos e diretórios - é usando o Console de Gerenciamento de Pacotes NuGet : Clique no campo 'Início rápido' (geralmente no canto superior direito), digite console, abra o console de gerenciamento e digite o comando:

Update-Package reinstall

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

Update-Package reinstall -ProjectName MyProject

Obviamente, isso só é necessário quando o Restorebotão - às vezes oferecido pelo VS2015 - não está disponível. Comandos de atualização mais úteis estão listados e explicados aqui: https://docs.microsoft.com/en-us/nuget/consume-packages/reinstalling-and-updating-packages

Jack Miller
fonte
Muito obrigado, tive o problema semelhante. Acabei de resolver o meu problema através do seu procedimento. Muito obrigado
McElie
Mesmo aqui, o único que trabalhou e não precisa de um monte de coisas escritas em todo o lugar
Harvey Lin
Resposta mais útil aqui!
neo
13

Se você tiver algum problema ou estiver faltando algum pacote, basta clicar com o botão direito do mouse em seu projeto e selecionar " Gerenciar pacotes NuGet para solução ... ". Depois de clicar nisso, uma tela será aberta, onde você verá uma barra de menus dizendo "Restaurar": Restaurar

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

Yenthe
fonte
3
Mas isso só ajuda se a barra de alerta aparecer, não no meu caso.
Nicholas Petersen
2
Uma etapa que instala manualmente um pacote ignora completamente o objetivo de uma restauração automatizada.
Quarkly
Eu acredito que este deve ser provavelmente a resposta aceita, é a mesma funcionalidade
user25064
1
Consegui ver a opção de restauração clicando com o botão direito do mouse na solução. Estava lá em "Gerenciar pacotes NuGet para solução". Fiz o truque para mim.
Daryl
1
Não funciona para mim - vejo avisos na solução sobre pacotes de nuget ausentes, mas gerenciar pacotes de nuget não me apresenta uma opção para baixá-los. Também não consigo construir e restaurar. Além disso, o comando restore não faz nada.
Markus
7

Use este comando para restaurar todos os pacotes

dotnet restore
Abdus Salam Azad
fonte
Funciona perfeitamente
JP..t 26/06/19
6

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

Exemplo de mensagem de erro: Este projeto faz referência aos pacotes NuGet que estão faltando neste computador. Ative a Restauração do pacote NuGet para baixá-los.

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

Corrigi o meu problema ao escrever um pequeno programa que faz a restauração de pacotes MSBuild-Integrated vs. Restauração automática de pacotes

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:

<Window x:Class="FixNuGetProblemsInVs2015.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:FixNuGetProblemsInVs2015"
        mc:Ignorable="d"
        Title="Fix NuGet Packages problems in Visual Studio 2015 (By Eric Ouellet)" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
        </Grid.RowDefinitions>

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"></ColumnDefinition>
            <ColumnDefinition Width="10"></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>

        <TextBlock Grid.Row="0" Grid.Column="0">Root directory of projects</TextBlock>
        <Grid Grid.Row="0" Grid.Column="2">
            <Grid.ColumnDefinitions>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition Width="Auto"></ColumnDefinition>
            </Grid.ColumnDefinitions>

            <TextBox Grid.Column="0" Name="DirProjects"></TextBox>
            <Button Grid.Column="1" VerticalAlignment="Bottom" Name="BrowseDirProjects" Click="BrowseDirProjectsOnClick">Browse...</Button>
        </Grid>

        <!--<TextBlock Grid.Row="1" Grid.Column="0">Directory of NuGet Packages</TextBlock>
        <Grid Grid.Row="1" Grid.Column="2">
            <Grid.ColumnDefinitions>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition Width="Auto"></ColumnDefinition>
            </Grid.ColumnDefinitions>

            <TextBox Grid.Column="0" Name="DirPackages"></TextBox>
            <Button Grid.Column="1"  Name="BrowseDirPackages" Click="BrowseDirPackagesOnClick">Browse...</Button>
        </Grid>-->

        <TextBox Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3" Name="TxtLog" IsReadOnly="True"></TextBox>

        <Button Grid.Row="3" Grid.Column="0" Click="ButtonRevertOnClick">Revert back</Button>
        <Button Grid.Row="3" Grid.Column="2" Click="ButtonFixOnClick">Fix</Button>
    </Grid>
</Window>


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;

/// <summary>
/// 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
/// </summary>

namespace FixNuGetProblemsInVs2015
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    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<XElement> elementsToRemove = new List<XElement>();

            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";
        }

    }
}
Eric Ouellet
fonte
O programa funcionou bem para converter uma tonelada de projetos em minha solução. A versão mais recente também possui um campo "Diretório de pacotes NuGet", mas não pareceu afetar a saída. O que isso faz?
Christoffer Årstrand
Desculpe, não faço ideia. Eu suspeito que isso vai depender do conteúdo do arquivo. Talvez você possa acompanhar a função: "FromProjectFileRemoveNugetTargets" e ver se seu arquivo pode ser afetado? Desculpe por essa resposta ruim, eu não me lembro o que eu codificado :-( Eu só sei que eu usei duas vezes em 2 de computador diferente com sucesso!.
Eric Ouellet
5

Vá para 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 explorador de arquivos. Agora abra a pasta packages e exclua a pasta packages em falta. Abra o visual studio e apenas crie a solução. todos os pacotes ausentes serão restaurados. Marque isso como resposta se eu ajudar.

Sandip Jaiswal
fonte
4

Suponho que para o projeto asp.net 4 estamos migrando para a restauração automática, portanto 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

Luca Morelli
fonte
Você provavelmente está certo. Eu apenas tentei criar o projeto usando exatamente as mesmas etapas no VS2013 e a opção "Ativar restauração do pacote Nuget" estava lá. Obrigado pelo link, vou ver agora.
Dan Beaulieu
4

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 (eu 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 de pacotes de nuget no VS2015.

Håkon Seljåsen
fonte
4

Eu enfrentei o mesmo problema ao tentar criar um projeto de exemplo gplus-quickstart-csharp-master .

Procurei atentamente a mensagem de erro e encontrei uma solução alternativa para superar esse erro, espero que isso ajude.

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

Aproveitar !!

Manoj Verma
fonte
4

Ivan BranetsA solução de é essencialmente o que corrigiu isso para mim, mas mais alguns detalhes podem ser compartilhados.

No meu caso, eu estava no VS 2015 usando a restauração automática de pacotes e o TFS . Isso é tudo bastante padrão.

O problema era que, quando outro desenvolvedor tentou obter uma solução do TFS, alguns pacotes não estavam sendo totalmente restaurados. (Ora, ainda não tenho certeza.) Mas a pasta packages continha uma pasta para a referência e o pacote NuGet, mas não estava sendo expandida (digamos, estava faltando uma pasta lib contendo uma DLL.) lá, mas o conceito não muito correto estava impedindo a restauração do pacote.

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

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

Greg
fonte
4

Feche o VS. Exclua tudo na pasta packages. Reabra sua solução. Clique com o botão direito do mouse no seu projeto, selecione 'Gerenciar pacotes de nuget ...'. Você verá uma barra amarela na parte superior da janela 'Nuget Package Manager', solicitando a restauração dos pacotes. Isso tem funcionado para mim.

Mandeep Janjua
fonte
3

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

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

Andreas
fonte
1

Também pode ser o resultado da execução do programa enquanto você tenta instalar o pacote. fica acinzentado se você tentar clicar nele enquanto o IIS interno estiver em execução em segundo plano.

Katushai
fonte
1

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

Jack
fonte
1

Eu usei msbuild /t:restore.


Crédito e fonte:

Meu problema estava no MSBuild. Então, segui o link de @Vinney Kelly : Migrando soluções integradas do MSBuild para a restauração automática de pacotes

e...

Isso funcionou como um encanto =]

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

Yitzchak
fonte
No meu caso / t: restore não cria o projeto para o qual eu tinha que usar o comando / restore
Kishan Vaishnav
1

Se tudo mais falhar (ou talvez antes disso), convém verificar se o NuGet é uma fonte de pacote. Eu instalei o VS2017 e ele NÃO estava lá por padrão. Eu pensei que era meio estranho.

  1. Ferramentas - NuGet Package Manager - Configurações do Gerenciador de Pacotes
  2. Clique em 'Origens do pacote' na navegação esquerda da caixa de diálogo.
  3. Use o sinal de adição (+) para adicionar o URL do Nuget: https://api.nuget.org/v3/index.json
douglas.kirschman
fonte
0

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

Chris Hammons
fonte
0

Ajudei-me a Ferramentas >>> Nuget Package Manager >>> Geral e marque a opção Permitir que o Nuget baixe o pacote ausente e verifique automaticamente se há pacotes ausentes durante a compilação no visual studio .

insira a descrição da imagem aqui

Anjan Kant
fonte
0

Para projetos do .NET Core , execute dotnet restoreou dotnet buildcomandoNuGet Package Manager Console (que executa automaticamente a restauração)

Você pode executar o console a partir de

Ferramentas> Gerenciador de Pacotes NuGet> Console do Gerenciador de Pacotes

MOH3N
fonte
0

Estou enfrentando o mesmo problema. Estou tentando adicionar um projeto MVC que foi criado no Visual Studio 2015 a uma solução que eu criei no Visual Studio 2019.

Já existem projetos no Visual Studio 2019, portanto, adicionar este projeto existente que criei no VS 2015 aciona o mesmo erro. Eu tentei todas as respostas aqui, mas isso não resolve o problema.

O que fiz foi colocar a pasta .nuget na pasta da solução. Originalmente, a hierarquia da pasta é esta:

Solution Folder (VS 2019)
  -> MVC 1 Project
  -> MVC 2 Project
  -> MVC 3 Project (Project that I am adding)
         -> .nuget folder (It contains a .nuget folder)

Portanto, o problema foi corrigido quando movi a pasta .nuget para a pasta da solução:

    Solution Folder (VS 2019)
  -> MVC 1 Project
  -> MVC 2 Project
  -> MVC 3 Project (Project that I am adding)
  -> .nuget folder (It contains a .nuget folder)
Willy David Jr
fonte
0

Solução VS 2019 Versão 16.4.4 destinada ao .NET Core 3.1

Depois de ter tentado quase todas as soluções propostas aqui, fechei o VS. Quando eu o reabri, depois de alguns segundos tudo voltou a ficar bem ...

Andrea Antonangeli
fonte
-4

Ainda mais simples, adicione uma pasta .nuget à sua solução e os 'Restaurar pacotes do Nuget' serão exibidos (não tenho certeza se o nuget.exe precisa estar presente para que ele funcione).

Paxton
fonte