Não foi possível encontrar o arquivo de metadados '… \ Release \ project.dll' no Visual Studio ”

135

Recentemente, comecei a receber essa mensagem aleatoriamente:

Não foi possível encontrar o arquivo de metadados '... \ Release \ project.dll' no Visual Studio

Eu tenho uma solução com vários projetos nele. O modo de compilação atual é Debug e as configurações de todos os projetos são definidas como Debug. Mas quando tento executar o projeto principal - algumas vezes, alguns erros são "Todos os arquivos de metadados '... \ Release \ projectX.dll' não foram encontrados" - e, veja, ele diz sobre RELEASE pasta, embora o modo atual seja Debug. Por quê? Tentei procurar por referência a "Release \ projectX.dll" em todos os arquivos de solução e encontrei um no arquivo ResolveAssemblyReference.cache.

Fiz uma boa pesquisa na Internet e encontrei algumas pessoas com um problema semelhante, mas não havia solução, ou pelo menos nenhuma solução funcional.

Tentei excluir as referências a esses projetos e lê-los, mas em algum momento começo a receber esses erros novamente.

Parece um bug. Por que ele procura projetos referenciados nas pastas Release quando eu sempre uso o modo Debug?

PS. Para quem encontrou esse problema: não consegui resolvê-lo de maneira fácil. Ele desapareceu somente depois que eu reinstalei o Windows :(

nightcoder
fonte
A primeira coisa a resolver em problemas como esse é excluir o arquivo .suo e reconstruí-lo.
vent
este problema pode ocorrer se um dll referenciada é usando versão diferente (inferior) do .NET Framework
m4ngl3r
Eu estava recebendo esse problema de forma consistente até desativar as compilações paralelas. Eu acho que há um erro na verificação de dependência de compilação paralela, possivelmente relacionada ao cache de informações obsoletas. (Para o registro, eu uso paralelo cria agora, e eu apenas construir novamente se o problema acontece, o que geralmente funciona.)
yoyo
Não foi possível encontrar a possível duplicata do arquivo
Michael Freidgeim 17/17/17

Respostas:

138

Todo mundo está correto ... tente de tudo ... (em pouco tempo ou muito tempo desperdiçado)

  1. Você tem código incorreto? Corrija isso primeiro.
  2. Solução limpa e reinicie o Visual Studio
  3. Remover / adicionar referências
  4. Verifique sua ordem de construção com projetos maiores e verifique
  5. Reconstruir manualmente subprojetos
  6. Copie manualmente dlls entre projetos em pastas bin associadas
  7. Vá tomar um café, jogar pinball e voltar amanhã ... você pode pensar em outra coisa enquanto isso.
beauXjames
fonte
17
Você precisa limpar todos os ERROS e manter as soluções / projetos estáveis.
Ravi Ram
isso acontece devido à diferença de nomes no nome da pasta e no nome do espaço para nome. Se você criar um espaço para nome em um determinado nome e posteriormente renomeá-lo, o espaço para nome terá o próprio nome antigo. E a compilação seguirá o caminho antigo para encontrar o arquivo .dlle .exe. Para evitar isso, abra o .csprojarquivo de cada espaço para nome com um arquivo de texto e encontre o caminho antigo no arquivo. remova isso, limpe e reconstrua a solução. Isso funcionou para mim. Passei um dia inteiro trabalhando nesse problema.
Sooraj
Se você não obtiver sucesso e estiver demorando, volte a tentar algumas das coisas básicas primeiro. Comecei a criar subprojetos, ainda havia erros, mas depois fechei e reabri o VS, reconstruí a solução, tudo funcionou.
precisa
6
Eu tinha nomes de namespace e projetos incompatíveis em uma dll referenciada em casa. Além disso, ele foi criado com o .NET 4.5.2 em vez do 4.5. Homem!
Jess
1
Tente excluir o arquivo .suo. É relativamente comum que fique corrompido.
Timbo
21

Eu tive o mesmo problema. Grande solução de estúdio visual com mais de 50 projetos.

Todas as referências foram adicionadas como projetos. A ordem de construção do projeto estava correta (clique com o botão direito do mouse no projeto e selecione a ordem de construção).

No entanto, ao criar alguns dos projetos de nível superior, o projeto "raiz" em que eles dependiam não foi construído.

O problema era que esses projetos não foram selecionados para compilar na configuração atual (não sei como isso aconteceu).

Para verificar isso, selecione "Configuration Manager" (menu Build) e verifique se os projetos problemáticos estão definidos para serem compilados.

dapim
fonte
Obrigado! Isso funcionou muito bem para mim quando, por algum motivo, minha configuração de versão não criou um dos meus projetos.
Vectovox
Você salvou minha vida!
Chethan Shetty
16

Quando você diz que excluiu as referências a esses projetos e as adicionou novamente, como as adicionou novamente exatamente? Você usou a guia "Procurar" na caixa de diálogo "Adicionar referência" no Visual Studio? Ou você usou a guia "Projetos" (que lista os projetos vizinhos em sua solução)?

Editar : se você usar a guia "Procurar" e adicionar manualmente a referência à sua .dll localizada na pasta / Release, o Visual Studio sempre procurará a .dll nesse local, independentemente do modo em que estiver. atualmente em (depuração ou versão).

Se você removeu o arquivo .dll real da pasta Release (manualmente ou executando "Solução Limpa"), sua referência será interrompida porque o arquivo .dll não existe.

Eu sugiro remover a referência ao ProjectX.dll e adicioná-la novamente - mas desta vez, use a guia "Projetos" na caixa de diálogo "Adicionar referência". Quando você adiciona uma referência dessa maneira, o Visual Studio sabe onde obter a .dll apropriada. Se você estiver no modo Debug, ele será obtido na pasta / Debug. Se estiver no modo Release, a pasta / Release. Seu erro de compilação deve desaparecer, e você também não fará mais (incorretamente) referência a uma liberação .dll enquanto estiver no modo de depuração.

Darren Steinweg
fonte
Eu costumava aba "Browse" no "Add Reference" diálogo
nightcoder
1
Para mim, o Visual Studio criou um projectname.v11 do tipo "Opções de Usuário da Solução do Visual Studio". Eu apaguei este arquivo e reiniciei e estava tudo bem.
Wes Grant
15

Bem, minha resposta não é apenas o resumo de todas as soluções, mas oferece mais do que isso.

Seção 1):

Em soluções gerais:

Eu tive 4 erros desse tipo ('o arquivo de metadados não pôde ser encontrado') junto com 1 erro dizendo 'O arquivo de origem não pôde ser aberto (' Erro não especificado ')'.

Tentei me livrar do erro 'o arquivo de metadados não pôde ser encontrado'. Para isso, li muitos posts, blogs etc. e descobri que essas soluções podem ser eficazes (resumindo-as aqui):

  1. Reinicie o VS e tente criar novamente.

  2. Vá para 'Solution Explorer' . Clique com o botão direito do mouse em Solução. Vá para Propriedades . Vá para 'Configuration Manager' . Verifique se as caixas de seleção em 'Compilar' estão marcadas ou não. Se algum ou todos eles estiverem desmarcados, verifique-os e tente construir novamente.

  3. Se as soluções acima não funcionarem, siga a sequência mencionada na etapa 2 acima e, mesmo que todas as caixas de seleção estejam marcadas, desmarque-as, verifique novamente e tente compilar novamente.

  4. Ordem de criação e dependências do projeto:

    Vá para 'Solution Explorer' . Clique com o botão direito do mouse em Solução. Vá para 'Dependências do projeto ...' . Você verá duas guias: 'Dependências' e 'Ordem de construção' . Essa ordem de compilação é aquela em que a solução é compilada. Verifique as dependências do projeto e a ordem de construção para verificar se algum projeto (por exemplo, projeto1) depende de outro (por exemplo, projeto2) está tentando construir antes desse (projeto2). Essa pode ser a causa do erro.

  5. Verifique o caminho do .dll ausente:

    Verifique o caminho da .dll ausente. Se o caminho contiver espaço ou qualquer outro caractere de caminho inválido, remova-o e tente criar novamente.

    Se essa for a causa, ajuste a ordem de construção.


Seção 2):

Meu caso particular:

Eu tentei todas as etapas acima com várias permutações e combinações com o reinício do VS algumas vezes. Mas, isso não me ajudou.

Então, decidi me livrar de outro erro que estava encontrando ('O arquivo de origem não pôde ser aberto (' Erro não especificado ')').

Me deparei com um blog: http://www.anujvarma.com/tfs-errorsource-file-could-not-be-opened-unspecified-error/#comment-1539

Tentei as etapas mencionadas no blog e me livrei do erro 'O arquivo de origem não pôde ser aberto (' Erro não especificado ')' e, surpreendentemente, me livrei de outros erros ('não foi possível encontrar o arquivo de metadados') .


Seção (3):

Moral da história:

Experimente todas as soluções mencionadas na seção (1) acima (e quaisquer outras soluções) para se livrar do erro. Se nada der certo, de acordo com o blog mencionado na seção (2) acima, exclua as entradas de todos os arquivos de origem que não estão mais presentes no controle de origem e no sistema de arquivos do seu arquivo .csproj .


Vikram
fonte
1
Voto esta resposta porque estávamos enfrentando esse problema por um colega de trabalho. Seu sistema, de alguma forma, perdeu a maioria / todas as suas dependências; portanto, ao criar, ele não seria compilado na ordem certa, pois o "arquivo de metadados para" Whatever.dll "não existe". Acabamos de percorrer todos os seus projetos com outro sistema para validar todas as dependências necessárias para cada projeto.
21134 jjbertucci
Bom ... Fico feliz que minha resposta tenha sido de alguma ajuda para você.
Vikram 07/07
11

Eu já tive esse problema antes e a única maneira que encontrei para resolvê-lo é executar o Clean Solution e reiniciar o Visual Studio.

jasonh
fonte
1
Não ajuda na minha situação, depois de pouco tempo o problema aparece novamente.
Nightcoder
Foi isso que o corrigiu para mim.
splintor
3
Este também funcionou para mim. Fez várias limpezas e nada funcionou. Depois que eu fiz uma limpeza e reiniciei, ele começou a funcionar novamente. Que irritante.
Ricky
8

Para mim, geralmente a estrutura de destino está desativada (4.5.2 em vez de 4.6). Se você corrigir a estrutura de destino do projeto para corresponder à estrutura de destino da solução e compilar, uma nova DLL será criada.

Adam Weitzman
fonte
Eu tive o mesmo problema para um projeto que foi criado com uma versão mais antiga do Visual Studio. Após a atualização do VS, os projetos foram criados com uma versão mais recente do .NET e causaram o problema de DLL não encontrado. (Vá para o painel de propriedades do projeto para exibir / editar a versão .NET.) Obrigado!
Tony S Yu
Obrigado milhão de vezes (esse é o número de outras soluções que tentei). Isso funcionou. Por alguma razão a biblioteca eu estou adicionando foi alvo diferente versão do framework .NET do que todos os outros projectos
Nour Lababidi
1
Adicionei um novo projeto de biblioteca de classes (dll) que foi referenciado em vários outros projetos. A nova dll era o .NET Framework 4.8, enquanto todos os outros projetos eram 4.7.2. Alterar a estrutura de destino (nas propriedades do projeto) para 4.7.2 corrigiu isso para mim. Obrigado Adam!
iCode 20/03
7

Abra novamente o Visual Studio como administrador.

Sebastian Patten
fonte
3

A maioria das respostas diz que você precisa remover as bibliotecas da sua solução, isso é verdade, mas quando você adiciona novamente as bibliotecas, o erro será mostrado novamente. Você precisa verificar se todas as bibliotecas mencionadas possuem uma estrutura .net compatível com a estrutura .net da sua solução. Em seguida, corrija todos os erros no seu código e reconstrua a solução.

Oscar Canek
fonte
3

Você verificou as configurações do Gerenciador de configuração? Na caixa de diálogo de configurações do projeto, canto superior direito.

Às vezes, acontece que entre todas as entradas de versão entra uma entrada de depuração. Nesse caso, a dependência automática criada pelo gráfico de dependência da solução fica confusa.

Totonga
fonte
Eu verifiquei. Todos os projetos têm a mesma configuração.
Nightcoder # /
2

Também vi esse erro nas soluções em que tenho vários projetos (geralmente projetos netTiers, em que atualizei um ou mais dos subprojetos para direcionar a estrutura 4.0). Pode ser problemático de remover. Muitas vezes, ele pode ser resolvido, no entanto, primeiro corrigindo todos os outros erros nos subprojetos (por exemplo, referências ausentes), reconstruindo esses subprojetos individualmente e removendo / adicionando novamente quaisquer referências a esses subprojetos no Visual Studio. Pessoalmente, tive pouca sorte em resolver esse erro limpando a solução sozinha.

Shaun3180
fonte
1
Remover referências de outros projetos (minha interface do usuário e projetos de teste, por exemplo), corrigir os erros (no projeto Core), criar e, em seguida, adicionar novamente essas referências, fez o truque para mim.
Ken Pespisa
2

Recentemente, resolvemos esse problema após a atualização para o Office 2010 do Office 2007 - tivemos que alterar manualmente as referências em nosso projeto para a versão 14 das Interops do Office que usamos em alguns projetos.

Espero que ajude - levamos alguns dias para descobrir isso.

Anthony Collins
fonte
2

No meu caso, foi causado por duas coisas (VS.2012):

1) Um dos projetos foi configurado para AnyCPU em vez de x86

2) Um projeto que foi referenciado teve de alguma forma a caixa de seleção "Compilar" desmarcada.

Verifique seu Build | Configuration Manager para obter uma visão geral do que está sendo criado e para qual plataforma. Verifique também se há Debug & Release, pois eles podem ter configurações diferentes.

Senhor dos Scripts
fonte
2

No meu caso, tive alguns erros no meu código. O Visual Studio mostrou o erro que você tinha em vez dos erros reais, como erros de sintaxe ou nomes de classes desconhecidos. Tente limpar a solução e construir projeto após projeto. Dessa forma, você descobrirá os erros reais.

Novamente, é exatamente isso que causa o erro para mim .

bytecode77
fonte
2

Eu tive esse problema e demorou muito tempo para descobrir. O problema surgiu quando removi os projetos da solução e os substitui pelos pacotes de nuget.

A solução parecia estar bem, mas o arquivo .csproj ainda continha esses projetos várias vezes como referência.

Parece que o VS não limpa esse arquivo adequadamente. Ainda fazia referência aos projetos removidos sob o capô. Quando removidas manualmente as referências do arquivo csproj, tudo funciona novamente! wohoo

Tarmo Elfving
fonte
2

Esse problema ocorre devido a arquivos pdb ou CodeContracts.

Para resolvê-lo:

  1. Limpe sua pasta de saída e reconstrua a solução.

  2. Reconfigure o CodeContracts ou desative-o para compilação temporária.

user1889439
fonte
2

Temos esse problema com bastante frequência, mas apenas com referências a projetos C ++ / CLI de projetos C #. Obviamente, é um bug no Visual Studio que a Microsoft decidiu não corrigir, porque é 'muito complexo' e eles prometeram uma revisão do sistema de compilação C ++, que agora é direcionado para o Visual Studio 2010.

Isso foi há algum tempo, e talvez a correção tenha entrado no Visual Studio 2008; Eu não acompanhei mais. No entanto, nossa solução típica foi

  • Configuração do switch
  • Reinicie o Visual Studio
  • Crie a solução
Fora da memória
fonte
Após esse problema desaparecer para sempre ou apenas temporariamente? E o que você quer dizer com "configuração do switch"? Por exemplo, eu sempre uso a configuração de depuração. O que devo fazer?
Nightcoder 12/06/09
Desaparece temporariamente. Na verdade, pode não ser uma solução para você, se você nunca alternar a configuração entre depuração e lançamento. Ou a mudança para liberar e, em seguida, depuração pode corrigi-lo, quem sabe;)
OutOfMemory
Bem, alguns dias atrás, mudei para o lançamento, construí a solução e voltei para o Debug. Depois disso, o problema mutante :): agora eu tenho apenas 1 tal erro em vez de uns poucos - é como outros projetos foram "fixo" :)
nightcoder
2

Eu mesmo tive o mesmo problema.

O Visual Studio 2013 apenas me disse que não podia fazer referência a ele e não conseguiu encontrar os metadados. Quando abri minha solução (que possui vários projetos), ele disse que estava usando projetos inferiores à versão de estrutura de um dos meus projetos.

Então mudei tudo para a versão 4.5 e funcionou novamente.

Jamie
fonte
Esta foi a mesma resolução que cheguei enquanto estava com esse problema. Algumas das referências usaram um Framework mais alto que meu aplicativo base. Quando alterei o Framework no aplicativo base para 4.5.2 (o mesmo que as outras referências), o problema desapareceu. Embora, VS não disse nada sobre diferentes versões de enquadramento ..
NoLifeKing
1

Lembro-me de ter um problema semelhante há alguns meses. Eu o resolvi temporariamente, copiando a DLL referenciada para a pasta Release, satisfazendo as expectativas do Visual Studio. Mais tarde, descobri a referência à DLL de lançamento no meu código real. Você deve tentar fazer uma pesquisa em todo o projeto por \ release \ project.dll.

Além disso, notei que os projetos de teste de unidade do Visual Studio às vezes colocam um atributo "DeploymentItem" em cada um dos métodos de teste que apontam para a DLL de destino e, se você alternar entre Debug e Release, o Visual Studio pode ficar confuso se a DLL não estiver mais no local esperado. Na minha experiência, esses atributos podem ser excluídos com segurança se você não os tiver colocado lá como parte de um cenário de "implantação única".

Robert Harvey
fonte
1

Eu tive esse problema e foi devido a um método inválido na biblioteca incorreta (dll) que não retornou um valor, por exemplo

public bool DoSomething()
{
   //I never bothered putting code here....

}

Quando eu comentei isso tudo compilado :)

Vidar
fonte
Eu ia escrever a mesma resposta, mas percebi que você já mencionou esse problema. Eu tive o mesmo problema, onde não retornei o valor booleano e a mensagem de erro desse problema ficou oculta entre vários outros problemas gerados após o fato.
precisa saber é o seguinte
1

Às vezes, o VS2010 alterna minha configuração de Qualquer CPU para Plataformas mistas. Quando isso acontece, recebo esta mensagem de erro.

Para resolvê-lo, volto para Qualquer CPU:
1. Clique com o botão direito do mouse na solução e selecione Propriedades.
2. Clique em Propriedades de configuração e, em seguida, no botão Gerenciador de configurações ....
3. Em Plataforma de solução ativa, selecione Qualquer CPU

Cara
fonte
1

Acho que isso geralmente ocorre quando ainda tenho uma declaração de método em uma interface, implementada por uma classe, mas que mais tarde removi e esqueci de removê-la também. Normalmente, apenas salvei a solução inteira a cada 30 minutos e depois volto para uma versão anterior, se não encontrar o erro.

Hans Rudel
fonte
1

Acabei excluindo minhas referências (eu as adicionei corretamente usando a guia projetos, e elas costumavam criar muito bem), editando manualmente meus arquivos .csproj e removendo entradas bizarras que não pertenciam - e definindo minhas saídas para depuração e release, x86 e x64 e qualquer cpu para todos ser "\ bin" - criei uma vez e adicionei novamente a referência (novamente, usando a guia projetos), e tudo começou a funcionar novamente para mim. Não foi necessário reiniciar o Visual Studio.

BrainSlugs83
fonte
1

Para mim, isso foi causado pelo destino da compilação ter sido reescrito para não gerar a dll. A remoção desse recurso para o destino de compilação padrão corrigiu o problema.

Jim Jeffries
fonte
1

no meu caso, eu estava trabalhando em um ramo fora do mestre. Então, verifiquei o ramo principal, executei uma compilação e depois fiz o check-out do meu ramo. Isso corrigiu o problema. Se você já está no master, sugiro que você verifique o commit anterior e o construa.

jayasurya_j
fonte
1
Uau! Eu tentei tantas opções, nada funcionou. Mas isso corrigiu o problema! Obrigado mate :)
Tharindu 04/04/19
0

Parece acontecer quando você faz check-out de uma solução com vários projetos que têm referências entre eles e não a criou antes. Se você tiver referências diretamente às DLLs, em vez de fazer referência ao projeto, receberá esta mensagem. Você sempre deve usar a guia Projetos na caixa de diálogo Adicionar referência para adicionar uma referência a um projeto na mesma solução. Dessa forma, o VS pode saber a ordem correta na qual construir a solução

Juancentro
fonte
0

O mesmo aconteceu comigo hoje, conforme descrito por Vidar.

Eu tenho um erro de compilação em uma biblioteca auxiliar (que é referenciada por outros projetos) e, em vez de me dizer que há um erro na biblioteca auxiliar, o compilador apresenta uma lista de erros do tipo MetaFile não encontrado. Após corrigir o erro de compilação na Helper Library, os erros do MetaFile desapareceram.

Existe alguma configuração no VS para melhorar isso?

Santoo
fonte
0

Eu tive o mesmo problema. Percebi que meu contexto db (EF4) localizado na dll do projeto não era reconhecido por algum motivo. Eu o apaguei e criei outro. e isso resolveu para mim.

mashta gidi
fonte
0

Teve o mesmo problema hoje.

Minha aplicação, uma aplicação Windows Forms, acidentalmente tinha uma referência a si mesma. Esquisito.

Uma vez removido, o erro desapareceu.

A referência foi adicionada cada vez que arrastei um controle de usuário, localizado no próprio projeto Windows Forms, para um formulário.

Christophe Geers
fonte
0

Eu tive o mesmo problema. Remover e adicionar manualmente as DLLs não ajudou. As ClassLibraries não foram compiladas para todos os projetos e estavam ausentes na pasta ... \ bin \ Debug do projeto [porque eu limpei a solução por engano]. Como a biblioteca de classes não foi compilada, significa que pode haver alguns erros em algum desses subprojetos .

Solução: Como minhas DLLs estavam lá para a pasta ... \ bin \ Release , tentei reconstruir no modo Release e encontrei um erro em uma linha em um dos subprojetos. A solução do erro e a reconstrução da solução eliminaram o erro de compilação.

shaz
fonte
0

Para mim, o Visual Studio criou um projectname.v11 do tipo "Opções do Usuário da Solução do Visual Studio". Eu apaguei este arquivo e reiniciei e estava tudo bem.

Wes Grant
fonte