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 :(
fonte
Respostas:
Todo mundo está correto ... tente de tudo ... (em pouco tempo ou muito tempo desperdiçado)
fonte
.dll
e.exe
. Para evitar isso, abra o.csproj
arquivo 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.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.
fonte
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.
fonte
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):
Reinicie o VS e tente criar novamente.
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.
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.
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.
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 .
fonte
Eu já tive esse problema antes e a única maneira que encontrei para resolvê-lo é executar o Clean Solution e reiniciar o Visual Studio.
fonte
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.
fonte
Abra novamente o Visual Studio como administrador.
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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 .
fonte
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
fonte
Esse problema ocorre devido a arquivos pdb ou CodeContracts.
Para resolvê-lo:
Limpe sua pasta de saída e reconstrua a solução.
Reconfigure o CodeContracts ou desative-o para compilação temporária.
fonte
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
fonte
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.
fonte
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".
fonte
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
Quando eu comentei isso tudo compilado :)
fonte
À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
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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
fonte
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?
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte