Estou trabalhando em um projeto WPF, C # 3.0 e recebo este erro:
Error 1 Metadata file
'WORK=- \Tools\VersionManagementSystem\BusinessLogicLayer\bin\Debug
\BusinessLogicLayer.dll' could not be found C:\-=WORK=- \Tools
\VersionManagementSystem\VersionManagementSystem\CSC VersionManagementSystem
É assim que eu faço referência aos meus controles de usuário:
xmlns:vms="clr-namespace:VersionManagementSystem"
<vms:SignOffProjectListing Margin="5"/>
Isso acontece após cada falha na compilação. A única maneira de obter a solução para compilar é comentar todos os meus controles de usuário e recriar o projeto. Depois, descomente os controles do usuário e tudo está bem.
Eu verifiquei as configurações de ordens de compilação e dependências.
Como você pode ver, parece ter truncado o caminho absoluto do arquivo DLL ... Eu li que há um erro no comprimento. Isso é um problema possível?
É muito chato e ter que comentar, criar e descomentar, a construção está se tornando extremamente cansativa.
Respostas:
Eu apenas tive o mesmo problema. O Visual Studio não está criando o projeto que está sendo referenciado.
Instruções escritas:
Instruções de captura de tela:
fonte
Isso ainda pode acontecer nas versões mais recentes do Visual Studio (acabei de acontecer no Visual Studio 2013):
Outra coisa a tentar é fechar o Visual Studio e excluir o
.suo
arquivo ao lado do.sln
arquivo. (Ele será gerado novamente na próxima vez que vocêSave all
(ou sair do Visual Studio)).Eu tive esse problema ao adicionar novos projetos à solução em outra máquina e depois puxar as revisões, mas o
.suo
arquivo também pode ser corrompido em outros casos e levar a um comportamento muito estranho do Visual Studio, portanto, excluí-lo é um dos coisas que eu sempre tento.Observe que a exclusão do
.suo
arquivo redefinirá o (s) projeto (s) de inicialização da solução.Mais sobre o
.suo
arquivo está aqui .fonte
.suo
arquivos estão ocultos. Então você terá que configurar seu explorador para mostrar arquivos ocultos..suo
arquivo está oculto e fica em um.vs
diretório oculto ao lado de.sln
. por exemplo: se o arquivo de solução forc:\foo\mysolution.sln
procuradoc:\foo\mysolution\.vs\mysolution\v14\.suo
.vs
pasta oculta, que também excluiu o.suo
arquivo. Reabri a solução, corrigi mais um erro não relacionado e o problema foi resolvido.A resposta sugerida não funcionou para mim. O erro é um engodo para outro problema.
Descobri que estava direcionando uma versão ligeiramente diferente do .NET e isso foi sinalizado como um aviso pelo compilador, mas estava causando a falha da construção. Isso deveria ter sido sinalizado como um erro e não como um aviso.
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 quatro erros desse tipo ('o arquivo de metadados não pôde ser encontrado') junto com um 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 Visual Studio 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 criar 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 'Build Order' . 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 ao reiniciar o Visual Studio 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 uma postagem no blog: Erro TFS - O arquivo de origem não pôde ser aberto ('Erro não especificado')
Tentei as etapas mencionadas nessa postagem do 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') como bem.
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 der certo, conforme 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
.NET v4.5
projeto para.NET v.4
.No meu caso, foi causado por uma incompatibilidade de versão do .NET Framework.
Um projeto era 3.5 e o outro projeto de referência 4.6.1.
fonte
Fechar e reabrir o Visual Studio 2013 funcionou para mim!
fonte
Bem, nada nas respostas anteriores funcionou para mim, por isso me fez pensar sobre por que estou clicando e esperando quando, como desenvolvedores, deveríamos realmente tentar entender o que está acontecendo aqui.
Pareceu-me óbvio que essa referência incorreta ao arquivo de metadados deve ser mantida em algum lugar.
Uma pesquisa rápida do arquivo .csproj mostrou as linhas de culpa. Eu tinha uma seção chamada <itemGroup> que parecia estar pendurada no antigo caminho de arquivo incorreto.
Então, uma correção simples:
Por favor, certifique-se de fazer backup de seu velho .csproj antes de mexer .
fonte
Eu também encontrei esse problema. Primeiro, você deve criar manualmente seu projeto DLL, clicando com o botão direito do mouse em Build. Então vai funcionar.
fonte
Metadata file ...proj1.dll could not be found
!No meu caso, tenho meu diretório instalado de maneira equivocada.
Se o caminho da sua solução for algo como "Meu Projeto% 2c Muito Popular% 2c Teste de Unidade% 2c Software e Hardware.zip", ele não poderá resolver o arquivo de metadados, talvez devamos evitar algumas palavras inválidas como% 2c.
Renomear o caminho para o nome normal resolveu meu problema.
fonte
Eu recebi o mesmo erro "Não foi possível encontrar o arquivo de metadados '.dll'" e tentei várias coisas descritas acima, mas o motivo do erro foi que eu estava fazendo referência a um arquivo DLL de terceiros que estava direcionado para uma versão .NET mais alta que meu projeto tenha como destino a versão .NET. Portanto, a solução foi alterar a estrutura de destino do meu projeto.
fonte
Visual Studio 2019 funcionou para mim:
.vs
pasta ocultafonte
Para mim, ele estava tentando encontrar uma DLL em um caminho que costumava conter o Projeto, mas nós a movemos para um novo diretório. A solução tinha o caminho correto para o projeto, mas o Visual Studio de alguma forma continuava procurando no local antigo.
Solução: renomeie cada projeto problemático - basta adicionar um personagem ou o que for - e renomeie-o novamente para o nome original.
Isso deve redefinir algum tipo de cache global no Visual Studio, porque isso limpa esse problema e vários outros, enquanto coisas como Clean não.
fonte
Adicionei um novo projeto à minha solução e comecei a obtê-lo.
O motivo? O projeto que eu trouxe foi direcionado para uma estrutura .NET diferente (4.6 e minhas outras duas foram 4.5.2).
fonte
Para mim, ocorreu quando incluí um novo projeto em uma solução.
O Visual Studio seleciona automaticamente o .NET framework 4.5.
Mudei para a versão .NET 4.5.2, como as outras bibliotecas, e funcionou.
fonte
Para mim, os seguintes passos funcionaram:
fonte
Eu estava arrancando meu cabelo com esse problema também, mas depois de tentar as respostas anteriores, a única coisa que funcionou para mim foi abrir cada projeto na minha solução 1 por 1 e construí-los individualmente.
Então fechei o Visual Studio 2013, reabri minha solução e ela compilou bem.
É estranho, porque se eu clicar em cada projeto no Solution Explorer e tentar construí-los dessa maneira, todos eles falharão. Eu tive que abri-los sozinhos em suas próprias soluções.
fonte
Parece que esse tipo de erro está relacionado ao fato de o Visual Studio não fornecer informações corretas sobre um erro. O desenvolvedor nem entende o motivo da falha na compilação. Pode ser um erro de sintaxe ou outra coisa. Em comum, para resolver esses problemas, você deve encontrar a raiz do problema (por exemplo, veja o log de compilação).
No meu caso, o problema era que a
Error List
janela não mostrava nenhum erro. Mas realmente havia erros de sintaxe; Encontrei esses erros naOutput
janela e, depois de corrigi-los, o problema foi resolvido.fonte
Minha instância do problema foi causada por um projeto comum que continha um nome de classe duplicado (sob um nome de arquivo diferente). É estranho que o Visual Studio não tenha conseguido detectar isso e apenas explodiu o processo de compilação.
fonte
Eu peguei esse problema no Visual Studio 2012 em uma solução que tinha muitos projetos. A reconstrução de cada projeto manualmente na solução na mesma ordem que a Ordem de criação do projeto (clique com o botão direito do mouse e recrie no Solution Explorer) corrigiu isso para mim.
Eventualmente, cheguei a um que me deu um erro de compilação. Corrigi o erro e a solução seria criada corretamente depois disso.
fonte
No meu caso, o problema foi que eu excluí manualmente um arquivo de não compilação marcado como "ausente". Uma vez eu apaguei a referência ao arquivo que faltava e recompilei - tudo estava bem.
fonte
Se você tiver um espaço no nome da sua solução, isso também causará o problema. Remover o espaço do nome da sua solução, para que o caminho não contenha% 20 resolverá isso.
fonte
Voltando a isso alguns anos depois, é mais do que provável que esse problema esteja relacionado ao limite máximo de caminho do Windows:
Nomeando arquivos, caminhos e espaços para nome , limitação máxima do tamanho do caminho
fonte
No meu caso, o problema foi causado por um simples erro de compilação,
que, por qualquer motivo, não apareceu na janela de erro.
Por esse motivo, o sistema de criação do Visual Studio pareceu perder o erro e tentou criar projetos dependentes, que por sua vez falharam com a mensagem irritante de metadados.
A recomendação é - por mais estúpida que possa parecer -:
Primeiro, olhe para a sua janela de saída !
Levei meia hora antes que essa idéia me atingisse ...
fonte
Eu também tive o mesmo erro. Esconde-se como no caminho abaixo. O caminho que eu me referi para o arquivo DLL é como "D: \ Assemblies Folder \ Assembly1.dll".
Mas o caminho original no qual o assembly se referia era "D: \ Assemblies% 20Folder \ Assembly1.dll".
Devido a essa variação de nome do caminho, o assembly não pôde ser recuperado de seu caminho original e, portanto, gera o erro "Metadados não encontrados".
A solução está na pergunta Stack Overflow. Como substituo todos os espaços por% 20 em C #? .
fonte
Eu enfrentei o mesmo problema. No meu caso, eu me referi a um projeto de biblioteca de classes com uma versão .Net mais alta que o meu projeto e o VS falhou ao criar o projeto e gerou o mesmo erro que você postou.
Simplesmente defino a versão .Net do meu projeto de biblioteca de classes (a que havia quebrado a compilação) idêntica à versão .Net do projeto e problema referenciado.
fonte
Apenas apontando o óbvio: se você não tiver "Mostrar janela de saída quando a compilação iniciar" ativada, verifique se a sua compilação está falhando (pequeno erro de "compilação falhou" no canto inferior esquerdo) !!!!
fonte
Eu tive esse erro ao tentar publicar um aplicativo da web. Descobriu-se que uma das propriedades de uma classe estava envolvida em
mas o uso da propriedade não foi. A publicação foi feita na configuração Release sem o
DEBUG
símbolo, obviamente.fonte
Com base na mensagem de erro, não acredito que o caminho do arquivo esteja sendo truncado. Parece estar incorreto. Se estou lendo a mensagem corretamente, parece estar procurando o arquivo DLL em ...
Este não é um caminho válido. É possível que você tenha uma definição de macro no processo de compilação definida como um valor inválido?
fonte
Eu tive esse problema porque
.nuget\NuGet.exe
não foi incluído no meu repositório. Embora tenha ativadoDownloadNuGetExe
no NuGet.targets, ele relatou um erro de proxy ao tentar fazer o download. Isso causou a falha do restante do projeto.fonte
Este erro pode ser mostrado se você usar montagens falsas. A remoção de falsificações leva à criação bem-sucedida do projeto.
fonte