Tenho solução e projeto no Visual Studio 2012.
O projeto tem um arquivo packages.config
na raiz do projeto.
Para os fins desta pergunta, vamos supor que eu removi acidentalmente essas bibliotecas da References
seção do meu projeto.
Ao entrar no gerenciador de pacotes do NuGet, a interface ainda está relatando uma marca ao lado desses pacotes, indicando que eles estão instalados.
A única maneira de ver como corrigir essa situação é excluir todas as entradas de packages.config
, o que corrigirá o problema da interface do NuGet relatando-as como instaladas e adicione novamente cada uma delas.
Existe uma maneira mais inteligente? Eu esperava que a ativação do 'habilitar o nuget para restaurar os pacotes ausentes' resolvesse isso, mas ele parece não fazer nada.
fonte
Você precisa ativar a restauração do pacote NuGet no nível da solução VS para que o pacote ausente da restauração funcione.
fonte
Caso isso ajude alguém, para mim, nenhuma das opções acima foi suficiente. Eu ainda não consegui construir, o VS ainda não conseguiu encontrar as referências. A chave era simplesmente fechar e reabrir a solução após restaurar os pacotes.
Aqui está o cenário (usando o Visual Studio 2012):
Você abre uma solução que possui pacotes ausentes. As referências mostram que o VS não pode encontrá-los. Existem várias maneiras de restaurar os pacotes ausentes, incluindo
nuget restore
se você tiver o nuget da linha de comando instaladoMas, independentemente da abordagem, essas referências ainda serão mostradas como ausentes. E quando você construir, falhará. Suspiro. No entanto, se você fechar a solução e reabri-la, agora o VS verifica
<HintPath>
novamente esses itens agradáveis , descobre que os pacotes estão de volta aonde pertencem e tudo está bem com o mundo.Atualizar
O Visual Studio ainda não está vendo que você possui o pacote? Ainda mostrando uma referência que não pode ser resolvida? Verifique se a versão do pacote que você restaurou é exatamente igual à
<HintPath>
do seu arquivo .csproj. Mesmo um número menor de correção de bug (por exemplo, 1.10.1 a 1.10.2) fará com que a referência falhe. Você pode corrigir isso editando diretamente o seu xml do csproj ou removendo a referência e criando um novo apontando para a versão recém-restaurada no diretório packages.fonte
.csproj
arquivo para garantir que os números de versão correspondentes funcionassem para mim. Obrigado!Enquanto a solução fornecida pelo @jmfenoll funciona, ela é atualizada para os pacotes mais recentes. No meu caso, após instalar o beta2 (pré-lançamento), ele atualizou todas as bibliotecas para RC1 (que tinha um bug). Portanto, a solução acima faz apenas metade do trabalho.
Se você está na mesma situação que eu e gostaria de sincronizar seu projeto com a versão exata dos pacotes NuGet que você tem / ou especificou no seu
packages.config
, então, este script pode ajudá-lo. Simplesmente copie e cole no seu Console do Gerenciador de PacotesE, em seguida, execute-o com um nome de pacote séptico como
ou para todos os pacotes como
Os créditos vão para Dan Haywood e sua postagem no blog .
fonte
O script a seguir pode ser executado na janela Console do Gerenciador de Pacotes e removerá todos os pacotes de cada projeto na sua solução antes de reinstalá-los.
Isso executará o script de instalação de todos os pacotes novamente, o que deve restaurar as referências de montagem ausentes. Infelizmente, todas as outras coisas que os scripts de instalação podem fazer - como criar arquivos e modificar configurações - também acontecerão novamente. Você provavelmente desejará começar com uma cópia de trabalho limpa e usar sua ferramenta SCM para escolher quais alterações em seu projeto manter e quais ignorar.
fonte
Eu adicionei as DLLs manualmente. Clique com o botão direito do mouse em Referências no projeto, selecione Adicionar referência e, na caixa de diálogo, pressione o botão Procurar. As DLLs do NuGet estão no diretório de pacotes da solução. Para obter os nomes deles, você pode clicar com o botão direito do mouse em referências em outro projeto que esteja funcionando corretamente, selecionar propriedades e procurar na propriedade path.
fonte
No Visual Studio 2015 (Soulution está sob controle de origem, MVC-Project), o csano's
Update-Package -Reinstall -ProjectName Your.Project.Name
funcionou, mas atrapalhou alguns bloqueios de gravação.Eu tive que excluir a pasta "packages" manualmente antes. (Parecia estar bloqueado por causa do controle de origem).
Além disso, tive que reinstalar o MVC-Package a partir do NuGet Package Manager.
fonte
Esse script reinstalará todos os pacotes de um projeto sem atrapalhar dependências ou instalar dependências que podem ter sido intencionalmente removidas. (Mais para os desenvolvedores de pacotes de peças.)
fonte
Apenas no caso de ajudar alguém - No meu cenário, tenho algumas bibliotecas compartilhadas (que têm seus próprios projetos / soluções TFS), todas combinadas em uma única solução.
Nuget restauraria projetos com êxito, mas a DLL estaria faltando.
O problema subjacente era que, embora sua solução tenha sua própria pasta de pacotes e os restaure corretamente nessa pasta, o arquivo do projeto (por exemplo, .csproj) está fazendo referência a um projeto diferente que pode não ter o pacote baixado. Abra o arquivo em um editor de texto para ver de onde vêm suas referências.
Isso pode ocorrer ao gerenciar pacotes em diferentes soluções compartilhadas interligadas - já que você provavelmente deseja garantir que todas as DLLs estejam no mesmo nível, defina-as no nível superior. Isso significa que, às vezes, ele procura uma solução completamente diferente para uma DLL referenciada. Portanto, se você não tiver todos os projetos / soluções baixados e atualizados, poderá encontrar o problema acima.
fonte
Eu tenho que concordar com @Juri que a resposta muito popular de jmfenoll não está completa. No caso de referências quebradas, afirmo que na maioria das vezes você não deseja atualizar para o pacote mais recente , mas apenas corrija suas referências às versões atuais que você está usando. E Juri forneceu uma função útil
Sync-References
para fazer exatamente isso.Mas podemos ir um pouco mais longe, permitindo a flexibilidade de filtrar por projeto e também por pacote:
fonte
Eu tive o mesmo problema com as referências ausentes. Abaixo do meu cenário:
Todos os números de versão no projeto e nos pacotes correspondem, fazendo a restauração de nuget (de todas as formas) não funcionou.
Como corrigi- lo: simplesmente exclua as pastas do pacote na raiz da solução e execute a restauração de nuget. Nesse ponto, as dlls são baixadas corretamente e podem ser adicionadas para as referências ausentes.
fonte
Sofri muito com esse problema; no meu caso, o download do NuGet ausente foi verificado (mas não está sendo restaurado) e não consigo desinstalar e reinstalar porque modifiquei alguns dos pacotes instalados ... então:
Acabei de limpar o cache e reconstruir e funcionou. (Gerenciador de pacotes Tools-Option-Nuget - Geral)
também este link ajuda https://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore .
fonte
Desinstale o pacote e remova as dependências
Limpe a pasta packages na raiz do projeto
Copie o package.config modificado para a pasta raiz do site
Execute este código para restaurar o projeto
fonte