Arquivo de metadados… erro não encontrado ao compilar projetos


98

Sempre que inicio o Visual Studio 2008, na primeira vez que tento executar o projeto, recebo o erro CS0006 O arquivo de metadados ... não foi encontrado. Se eu reconstruir a solução completa, ela funcionará.

Algumas informações sobre a solução:

  • Estou construindo no modo de depuração e o Visual Studio reclama por não encontrar dll: s na pasta de lançamento.

  • Os projetos dos quais o Visual Studio reclama são usados ​​por muitos outros projetos na solução.

  • Mudei o caminho de saída padrão de todos os projetos para ...... \ build \ debug \ ProjectName e ...... \ build \ release \ ProjectName respectivamente. (Apenas para obter todos os arquivos de construção em um diretório)

  • Tenho o mesmo problema com outra solução.

  • A solução foi criada do zero.

  • Existem 9 projetos na solução. Um WPF e 8 bibliotecas de classes usando dotnet 3.5.

Alguma ideia sobre o que está causando esse problema?


Respostas:


133

Eu tive o problema semelhante em que "metadados não puderam ser encontrados". na propriedade da solução, certifique-se de que a caixa de seleção "build" esteja marcada no Build / Configuration Manager para cada projeto.


16
Para quem não consegue encontrar, Build / Configuration Manager refere-se ao menu Build -> item de menu Configuration Manager.
John Kurlak de

4
Acabei de encontrar esse problema, o motivo foi outro erro que fez com que o projeto referenciado não fosse compilado com sucesso. Isso foi em uma verificação limpa, então nenhum arquivo DLL existia de compilações anteriores com sucesso. Corrija os erros e certifique-se de que um projeto referenciado seja compilado corretamente.
Moulde

9
Ocasionalmente, mesmo isso não vai ajudar, como observado por Nick acima. Nesse caso, fechar e reiniciar o VS sempre funcionou para mim. YMMV.
philofinfinitejest

3
Não resolveu o problema. Reiniciei o VS e não resolveu o problema.
Shimmy Weitzhandler

26

Isso geralmente é causado por um projeto que é referenciado em uma solução diferente daquela que está gerando o erro. Se você limpar a outra solução ou ramificar o código, provavelmente verá esse erro. A solução é rolar para baixo sua lista de erros "metadados não encontrados" e olhar as referências aos projetos. 9/10 vezes, você verá uma referência quebrada para um projeto que não está nesta solução. Adicione os projetos para corrigir os erros de referência e reconstrua. Isso deve consertar.

(Acabei de encontrar isso hoje, e já aconteceu, e SEMPRE funcionou)


Apenas os projetos que estão na minha solução estão reclamando.
The Muffin Man

7

Eu tive esse problema, não tenho certeza se vai ajudar, mas o meu foi causado por ter duas versões diferentes do mesmo projeto referenciadas por duas soluções diferentes. Quando eu construí a solução com a referência para o projeto correto primeiro, a segunda solução seria adequada, no entanto, se eu limpasse a primeira solução e tentasse construir a segunda solução, ela iria falhar com essas mensagens de erro de referência de dll.

A solução para mim foi descobrir que eu tinha dois projetos com o mesmo nome que haviam sido duplicados acidentalmente e remover a referência ao projeto incorreto antigo e adicionar uma referência ao novo.

Em qualquer caso, parece que essas mensagens são um pouco enganadoras, eu verificaria a saída de sua compilação e encontraria o primeiro projeto que falhou em compilar e verificaria com muito cuidado as referências nesse projeto.


1
+1 pela nota sobre a imprecisão dessas mensagens. Isso surgiu para mim porque os caminhos para os assemblies referenciados em uma solução foram interrompidos. Lê-los e recompilar resolveu o problema.
E. Rodriguez de

6

Outra coisa a verificar é o comprimento do caminho ... que causa também Arquivo de metadados não encontrado e erros de compilação ... Acabei de renomear minhas pastas para caminhos mais curtos e voilá, classes que não foram reconhecidas e ficaram pretas, ficaram azuis apenas com a renomeação a pasta.


5

Para mim, tive um projeto referenciado em outro projeto. Ele não mostrou que estava quebrado na lista de referências na janela do Solution Explorer, mas eu o removi e readicionei mesmo assim. Ele constrói muito bem agora!


É verdade, eu removi todas as referências e as adicionei novamente.

3

Passei por todas essas etapas no VS2012, mas continuei encontrando esse problema ao construir a solução como um todo (os projetos individuais construídos perfeitamente, sem erros).

Descobri que se você clicar com o botão direito do mouse em sua solução no Solution Explorer e selecionar "Build Order", poderá ver a ordem que o VS está usando para reconstruir sua solução. Provavelmente está fora de sintonia.

Você pode corrigir a ordem de construção clicando na guia Dependências e selecionando os projetos que dependem de outros projetos na solução e verificando os projetos dos quais eles dependem. Depois de clicar em OK e reconstruir a solução, você estará pronto para prosseguir.


2

A maneira como resolvi isso no passado no VS2005, assim como agora no VS2008, é ter certeza de que todas as dependências estão corretas e as referências estão apontando para os projetos, não para as dlls. Em seguida, prossiga e construa manualmente cada projeto em ordem de dependência. Assim que o último for compilado, você pode executar uma compilação de solução completa e tudo bem.

Esta resposta é para referência futura para outras pessoas, pois sei que a pergunta tem mais de 15 meses.

Felicidades


2

Eu gostaria de fazer alguns pontos.

Se você está contando com o arquivo de solução como seu arquivo de compilação no MSBuild, certifique-se de adicionar projetos ao arquivo de solução na ordem em que deseja que eles sejam compilados, ou seja, com base na ordem de dependência mútua dos projetos. Isso se torna muito importante se você tiver projetos na solução dos quais outros projetos dependem, mas as referências foram adicionadas como "Referências" em vez de "Referências do projeto".

Você deve evitar isso como uma praga, mas caso precise fazer isso, pelo menos certifique-se de que os projetos dependentes apareçam anteriormente no arquivo de solução.

Você deve ter em mente que a maneira como o Visual Studio gera a ordem de construção não é exatamente igual à maneira como o MSBuild o faz. Isso ocorre porque o MSBuild depende principalmente do arquivo de projeto para informar quais são as dependências, enquanto o Visual Studio também pode salvá-las no arquivo de solução. Portanto, às vezes você pode ver situações em que o Visual Studio constrói a solução perfeitamente, mas o MSBuild simplesmente não consegue fazer isso.

Tive algumas instâncias em que tive que ajustar manualmente a ordem em que os projetos aparecem no arquivo de solução, bem como a ordem em que os projetos foram listados no elemento ProjectReferences em um projeto de Web Site no arquivo de solução.

Espero que as informações acima ajudem.


2

Se você usar contextos de dados LinqtoSQL, por exemplo, e o arquivo .designer.cs estiver ausente, você obterá o erro Arquivo de metadados não encontrado.

É fácil recriar o arquivo designer.cs.

Abra o dbml usando a visão xml. Adicione uma linha em branco, remova-a e salve. Isso deve gerar novamente seu arquivo designer.cs.

Em algumas circunstâncias, se você tiver código dentro do code-behind de seu contexto de dados, essa solução alternativa não funcionará. Nesse caso, retire o código do código por trás e coloque-o no bloco de notas ou algo assim. Faça o truque de adicionar e remover uma linha do DC e salve. Agora coloque o código de volta e salve.


2

Tenho um problema semelhante cada vez que atualizo o projeto do SVN.
Outra solução para ASP.NET:

  1. Feche o IDE.
  2. Exclua os arquivos em C:\WINDOWS\microsoft.net\framework\v…\Temporary ASP.NET File\.

1

Eu também experimentei esse erro e a causa é que o Projeto está se referindo a si mesmo. Não tenho ideia de como isso aconteceu, mas acabei de remover a referência e voila


1

Primeiro, certifique-se de que a caixa de seleção "build" esteja marcada em Build -> Configuration Manager para cada projeto.

No caso, se você já tiver todos os projetos selecionados no menu Build -> Configuration Manager, e reiniciar o truque do VS não funcionar para você, então você precisa encontrar a referência do (s) arquivo (s) (pode ser dll ou cs) em seu projeto e exclua essas referências manualmente. Esses arquivos / referências devem ser exibidos com o ícone amarelo. O erro definitivamente o orienta sobre qual projeto de solução você deve examinar.

A razão deste erro é porque você excluiu arquivo (s) manualmente no Windows Explorer e o VS não atualizou a referência e tentou localizar o arquivo que não existe mais!


1

No meu caso, descobri que uma das minhas soluções foi fazer referência a algo que não estava lá no computador (VBIDE). Depois de remover a referência ofensiva, o restante dos projetos foi construído corretamente. Espero que ajude alguém.

E em outra situação, movi algum código de um projeto para outro, e esse pedaço de código estava fazendo referência a Json.net. Eu adicionei manualmente uma referência ao Json.net, mas isso fez com que o problema surgisse. Resolvi isso instalando Json.net através do NuGet e isso fez o problema desaparecer. Espero que ajude alguém.


0

A mesma coisa aconteceu. Tenho várias soluções referenciando os mesmos projetos de biblioteca (.net 3.5). Notei que quando um foi construído em debug / configuração normal e outro usando alguma outra diretiva do compilador (sqlite / modo local), isso aconteceria. Basta obter os dois projetos de construção com as mesmas diretivas e você estará bem.


0

Se você adicionou um novo projeto à solução, verifique se ele está na lista de construção (consulte o Gerenciador de configuração)


0

Eu fiquei preso com o problema de salvar quando queria incluir um arquivo DLL gerado pelo Matlab. E finalmente resolvi isso copiando um arquivo .ctf, que significa certificado, suponho, e um .netmodule, que é necessário para a operação adequada do .dll, junto com o arquivo .dll. E isso realmente funcionou! Portanto, minha sugestão é verificar se o .dll precisa de outros arquivos para se dar conta.


0

Windows 7 Ultimate 32 Visual Studio 2008 SQL Server v2005

Eu estava recebendo o mesmo erro. E decidi remover e adicionar novamente as referências do projeto. Não consegui adicioná-los de volta porque a referência do banco de dados em cada um dos projetos referenciados estava em branco.

Depois de redefinir a referência do banco de dados para a configuração correta, fui capaz de construir sem mais problemas. Além disso, esta foi minha primeira tentativa de reconstruir este projeto depois de ter ramificado o código-fonte no VSS.

Boa sorte


0

Eu tive este erro que foi causado por uma das dependências do meu projeto, onde o nome do assembly foi alterado no projeto, mas a referência não foi atualizada. Portanto, atualizar a referência ou renomear a montagem de volta irá consertar isso.


0

EE - No Meu caso o problema estava no projeto que possui o framework Entity, abra o diagrama arraste qualquer tabela 2 cm :) e salve, o VS irá atualizar todos os seus links para o DB ... construa este projeto e construa a solução , Buildssss.


0

A única coisa que me corrigiu (porque não estou executando o VS2010 em uma conta de administrador) foi mover manualmente a variável de ambiente VS120COMNTOOLS de Variáveis ​​de sistema para Variáveis ​​de usuário.


0

A exclusão das entradas de todos os arquivos de origem que não estão mais presentes no controle de origem e no sistema de arquivos do arquivo .csproj funcionou para mim.


Abordagem detalhada:

Bem, minha seguinte 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 ('arquivo de metadados não pôde ser encontrado') junto com 1 erro dizendo 'Arquivo de origem não pôde ser aberto (' Erro não especificado ')'.

Tentei me livrar do erro 'arquivo de metadados não foi 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 construir novamente.

  2. Vá para 'Solution Explorer' . Clique com o botão direito em Solução. Vá para Propriedades . Vá para 'Configuration Manager' . Verifique se as caixas de seleção em 'Build' 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 se todas as caixas de seleção estiverem marcadas, desmarque-as, marque novamente e tente construir novamente.

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

    Vá para 'Solution Explorer' . Clique com o botão direito em Solução. Vá para 'Dependências do projeto ...' . Você verá 2 guias: 'Dependências' e 'Ordem de criação' . Essa ordem de construção é aquela em que a solução é construída. Verifique as dependências do projeto e a ordem de construção para verificar se algum projeto (digamos 'projeto1') que é dependente de outro (digamos 'projeto2') está tentando construir antes daquele (projeto2). Essa pode ser a causa do erro.

  5. Verifique o caminho do .dll ausente:

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

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


Seção 2):

Meu caso particular:

Tentei todas as etapas acima com várias permutações e combinações, reiniciando o VS algumas vezes. Mas, isso não me ajudou.

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

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

Tentei as etapas mencionadas naquele blog e me livrei do erro 'Arquivo de origem não pôde ser aberto (' Erro não especificado ')' e surpreendentemente me livrei de outros erros ('arquivo de metadados não foi encontrado') também.


Seção (3):

Moral da história:

Tente todas as soluções mencionadas na seção (1) acima (e quaisquer outras soluções) para se livrar do erro. Se nada funcionar, 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 de seu arquivo .csproj .


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.