No se pudo encontrar el archivo de metadatos VS 2017 '.dll

86

Sé que hay otra pregunta con exactamente el mismo problema, pero revisé todas esas respuestas y ninguna me ayudó. :( ( Esta era la pregunta ) .

Acabo de crear un nuevo proyecto ASP.NET MVC y me uní a algunos '.dll's en la solución. Ahora, cuando intento construir el proyecto, aparece el mensaje de error que se muestra a continuación en 3 de las 5 bibliotecas.

Error   CS0006  Metadata file 'C:\Users\...\source\Database\bin\Debug\DataAccessLayer.dll' could not be found   Logic   C:\Users\...\source\Logic\CSC   1   Active

Error   CS0006  Metadata file 'C:\Users\...\source\Logic\bin\Debug\Logic.dll' could not be found    PTS2-MVC    C:\Users\...\source\PTS2-MVC\CSC    1   Active

Error   CS0006  Metadata file 'C:\Users\...\source\PTS2-MVC\bin\PTS2-MVC.dll' could not be found    PTS2-MVC.Tests  C:\Users\...\source\PTS2-MVC.Tests\CSC  1   Active

Cuando voy a la carpeta bin \ debug de ese .dll, veo que está vacío, y el otro .dll donde no obtengo un mensaje de error, no está vacío. Pero no tengo ni idea de cómo solucionar esto o qué hice para que esto sucediera.

La respuesta más común es ir a las propiedades de la solución e ir a configuración y desmarcar -> aplicar -> marcar y aplicar nuevamente, pero eso no funcionó

Svenmarim
fuente
Solo una suposición, pero parece que VS los eliminó. No estoy seguro de qué son esos dll o de dónde son, pero si usted es el que los hizo, me aseguraría de que la solución en la que estén los construya. Si estas carpetas son de lo que se está construyendo su solución actual, entonces no las encontrará una vez que limpie su solución nuevamente.
TheNoob
Limpiar ^ reconstruir || reinicie su visual, verifique nuevamente
Asif Raza
@AsifRaza Ya hice eso muchas veces, pero pensando conmigo :)
Svenmarim
1
@TheNoob ¿Entonces dices que necesito probar y limpiar mi solución y luego construirla? porque ya probé eso
Svenmarim
eliminar todos los de la carpeta bin, luego reconstruir ^ verificar
Asif Raza

Respuestas:

121

El problema era que tenía algunos otros mensajes de error normales en mi proyecto, y aparentemente después de que los arreglé y cuando limpié y construí mi proyecto OTRA VEZ, todos los archivos .dll tuvieron éxito.

Asegúrese de no tener ningún otro mensaje de error en su proyecto y, si lo tiene, ¡corríjalos primero!

Svenmarim
fuente
6
De hecho, tuve el mismo problema, pero no aparecieron otros errores, solo el error 1 sobre el archivo .dll faltante. Pero luego, en algún momento (sin que yo cambiara ningún código), de repente apareció un error de sintaxis que no aparecía antes. Una vez que solucioné ese error, como dijiste, limpié, reconstruí y todo funcionó.
jbyrd
23
El mismo problema aquí. Parece haber un error en la ventana Lista de errores donde los errores no aparecen a veces (y otras veces los errores que fueron corregidos continúan apareciendo, a pesar de hacer una limpieza / reconstrucción). La ventana de salida es más confiable, así que verifique allí cuando se encuentre con este problema.
Santosh
1
Descubrí que tenía que habilitar las advertencias en mi pestaña "lista de errores" en Visual Studio. Fue en las advertencias que vi que un .dll referenciado no se podía resolver. Tuve que eliminar la referencia existente y agregar una nueva en el directorio correcto. Todo está bien ahora.
user1431072
vea mi comentario anterior, pero básicamente lo mismo, excepto que un error en VS impedía que se mostraran los errores hasta que desmarqué / verifiqué las opciones de compilación en las páginas de propiedades de la solución.
roba el
1
Esta es la única respuesta que realmente me ayudó. ¡Magnífico! ¡Gracias!
ɐsɹǝʌ ǝɔıʌ
34

Pasos para corregir este error: No se pudo encontrar el archivo .dll de metadatos.

  1. Limpiar todos los proyectos.

  2. Descargar todos los proyectos.

  3. Recargar todos los proyectos.

  4. ReBuild Solution.

Entonces problema resuelto.

rjay dadula
fuente
Esto realmente arregló mi caso.
Vu Nguyen
descargar y volver a cargar fueron la clave para mí. ¡Pasé mucho tiempo en este tema hasta que hice eso!
ikariw
15

En mi caso, hubo un error, pero VS no lo analizó correctamente y no se mostró en la ventana "Lista de errores". Para encontrarlo, puede ver el "Resultado" de la ventana de compilación y analizar los mensajes comenzando de arriba hacia abajo y resolver el error real. M $, ¡por favor arregle! Esta es una gran pérdida de tiempo para los desarrolladores colectivos del mundo.

ebol2000
fuente
1
Esto me resolvió el problema. Probé todas las demás soluciones, pero la ventana de salida me indicó que mi proyecto se estaba construyendo contra netframework 4.7.2, que era más alto que el marco objetivo netframework 4.6. Solo tuve que editar el .csjproj para que apunte a 4.6.
Calum Mullen
11

Verifique el nombre de la carpeta de su proyecto. En mi caso, mi carpeta de proyecto se nombró con espacios. Cuando cloné el proyecto de Team Foundation Server usando git bash, los espacios en el nombre de la carpeta se convirtieron a: "% 20". Cambiar esos de nuevo a espacios solucionó el problema para mí.

roscoelee
fuente
2
El mismo problema, debido a STUPID VSTS.
Arsen Khachaturyan
2
Esta fue la razón exacta del error anterior. Gracias por el consejo. funcionó
user3785553
10

Tuve este problema con una solución que contenía varios proyectos.

Provino de duplicar un .csproj y agregar la copia a la solución. Un archivo .csproj contiene un <ProjectGuid>elemento. Configuré el GUID del proyecto copiado en uno nuevo.

Actualización: el GUID que use no importa, solo debe ser diferente del GUID del otro proyecto. Puede crear un nuevo GUID desde Visual Studio: Tools -> Create GUIDy copiar la parte entre las llaves, es decir {...}. Úselo como el nuevo valor para el <ProjectGuid>elemento.

También realicé los siguientes pasos (no necesariamente necesarios, pero no duelen):

  1. Cerrar la solución
  2. Eliminar carpeta bin
  3. Eliminar todas las carpetas obj
  4. Abrir solución y construir
j00hi
fuente
6

Soluciono este problema siguiendo estos pasos:

  1. Solución limpia
  2. Cerrar Visual Studio
  3. Eliminando / bin del directorio del proyecto
  4. Reinicie Visual Studio
  5. Reconstruir solución
Lucas Prestes
fuente
1
Gracias, después de 5 horas de búsqueda y prueba, su solución me salvó :)
Masoud
3

Tengo el mismo problema, el problema fue que la ruta de la solución tiene espacios en el nombre y, por alguna razón, no resuelve el paquete ... descargue mi repositorio nuevamente simplemente cambiando el nombre de la solución sin espacios en el nombre.

p.ej:

/Repo/Project Name/src

debiera ser

/Repo/ProjectName/src
RE__
fuente
Lo mismo aquí, pero tenía %20en el nombre de la carpeta.
Wojtek Turowicz
3

Para mí, la limpieza y la construcción no funcionaron. La descarga del proyecto no funcionó. Reiniciar Visual Studio o incluso la PC no funcionó. Esto es lo que funcionó:

Vaya a cada uno de los proyectos que están arrojando el error, y en Referencias, elimine la referencia al proyecto problemático y vuelva a agregarlo. Eso resuelve el problema.

El problema parece estar relacionado con mover un proyecto (Moverlo dentro de una carpeta, por ejemplo), luego un proyecto diferente que hace referencia a él, tiene su ruta incorrecta y no puede encontrarlo.

David Pérez
fuente
Cambié los directorios de mis proyectos, lo que causó un problema con dll's no construyendo usando reconstruir todo y esta respuesta soluciona mi problema.
Alain Elemia
3

Tuve el mismo problema, incluso sin que aparecieran otros errores en la vista "Lista de errores" después de "Reconstruir solución". Sin embargo, en la vista "Salida", vi el error que estaba detrás del problema:

La referencia principal "C: ... \ myproj.dll" no se pudo resolver porque se creó en el marco ".NETFramework, Version = v4.6.1". Esta es una versión superior a la del marco de trabajo actual ".NETFramework, Version = v4.5"

Una vez que corrigí esto, el problema se resolvió.

Ian
fuente
2

Otra cosa que debe verificar es el marco de destino de cualquier proyecto referenciado para asegurarse de que el proyecto de llamada esté utilizando la misma versión o una versión posterior del marco.

Tuve este problema, probé todas las respuestas sugeridas anteriormente y luego, por una corazonada, verifiqué los marcos. Uno de los proyectos a los que se hace referencia fue la orientación 4.6.1 cuando el proyecto de llamada era solo 4.5.2.

Robar
fuente
Lo mismo aqui.
Anthony Queen
2

Ejecutar este comando en bash para eliminar todos los contenedores funcionó para mí

$ find . -iname "bin" -o -iname "obj" | xargs rm -rf

Sin embargo, no puedo garantizar que funcione para nadie más

También tenga en cuenta que eliminará todos los archivos bin, por lo que tendrá que reconstruir todos los proyectos. Obviamente, es mejor hacer cd en el directorio relevante antes de usarlo.

Yair Halberstadt
fuente
2

La limpieza de mi solución causó este problema con Visual Studio 2017. La descarga / recarga de proyectos o más limpieza no hizo ninguna diferencia. Lo único que funcionó fue cerrar y reiniciar Visual Studio.

Juan81
fuente
Lo mismo en VS 2019: simplemente cerrar VS y volver a abrir la solución ayudó.
Heri
2

Compruebe que todos los proyectos estén cargados. En mi caso, uno de los proyectos se descargó y volver a cargar el proyecto borra los errores.

Maryam
fuente
2

En mi caso, tuve que abrir el archivo .csproj y agregar la referencia a mano, así (faltaba Microsoft.Extensions.Identity.Stores.dll):

<Reference Include="Microsoft.Extensions.Identity.Stores">
  <HintPath>..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.identity.stores\2.0.1\lib\netstandard2.0\Microsoft.Extensions.Identity.Stores.dll</HintPath>
</Reference>
toutecrimson
fuente
2

Cierre Visual Studio, busque el archivo .suo de la solución, elimínelo y vuelva a abrir Visual Studio.

Graham Laight
fuente
2

Lo que funcionó para mí:

Consola del administrador de paquetes (Visual Studio 2019 Comunity):

Install-Package NuGet.CommandLine
nuget locals all -clear

Reconstruir la solución.

s3c
fuente
1

En mi caso, estaba enfrentando el mismo error. Una de las soluciones de mi proyecto fue referir un ensamblado desde una ubicación diferente de NuGet. Lo cambié a la ubicación correcta para resolver este error y reconstruir. y wow, el proyecto se compila con éxito y todos los demás errores desaparecen.

Mukesh Kumar
fuente
1

Tuve este mismo error. En mi caso, había creado una biblioteca (llámela commsLibrary) que hacía referencia a otras bibliotecas al incluirlas como proyectos en mi solución. Más tarde, cuando construí un proyecto y agregué mi commsLibrary , cada vez que lo compilaba , obtenía el error de no se puede encontrar el archivo de metadatos. Así que agregué las bibliotecas a las que mi biblioteca de comunicaciones hacía referencia al proyecto actual y luego se pudo construir.

Joseph Mawer
fuente
1

Después de enfrentar tantos problemas, aquí está la solución que encontré.

  1. abre la carpeta de tu proyecto.
  2. busque Your_Project_Name.csproj [archivo de proyecto de Visual C # (.csproj)]
  3. abra ese archivo en cualquier editor de texto y busque el archivo ItemGroup que falta.

    <ItemGroup> <None Include="..." /> </ItemGroup>

  4. elimine ese ItemGroup y abra una vez más su proyecto y compile

  5. Si esa referencia es importante para usted, agregue una vez más.
Abhishek Shingadiya
fuente
1

Tuve el mismo problema y probé las soluciones del archivo de metadatos '.dll' que no se pudieron encontrar

pero ninguno de estos funcionó.

Entonces, después de prueba y error, lo arreglé descargando y volviendo a cargar el proyecto, restableciendo el archivo de configuración y solucionando el problema.

Amad Malik
fuente
1

He creado 10 proyectos de 25 proyectos en solución individualmente uno por uno según las dependencias. Luego construye la solución. Me arregló

Siva Sankaran
fuente
Esta fue mi solución
Lasitha
0

Tuve el mismo problema. Mi problema fue que alguien más en el equipo movió una carpeta de la clase y el proyecto la estaba buscando.

Para mí, hubo 44 errores; 43 terminó en .dll (buscando una dependencia) y el primero en la lista de errores terminó en .cs (buscando la clase real). Intenté limpiar, limpiar, descargar, recargar, construir, pero nada funcionó. Terminé ubicando la clase en el proyecto y simplemente la eliminé, ya que de todos modos aparecía como no disponible, seguida de una construcción limpia.

¡Eso me sirvió! Espero que esto ayude.

Burke
fuente
0

Tenía 2 archivos (y 2 clases) en el mismo proyecto con el mismo nombre.

JohnB
fuente
0

En mi caso, eliminé un archivo directamente del menú git del explorador del equipo que estaba causando este problema. Cuando verifiqué el explorador de soluciones, todavía mostraba el archivo eliminado como archivo sin referencia. Cuando eliminé ese archivo del explorador de soluciones, pude construir el proyecto con éxito.

p4ulinux
fuente
0

Para mí lo que funcionó fue:

Desinstale y vuelva a instalar el paquete Nuget al que se hace referencia que tiene el error.

Andrés
fuente
0

En mi caso ejecuté las pruebas y obtuve el error CS0006. Resultó que ejecuto pruebas en modo de lanzamiento. Cambiar al modo de depuración solucionó este error.

izimiky
fuente
0

Este problema ocurre cuando cambia el nombre de su solución y el marco .net no puede encontrar la solución anterior.

Para resolver esto, debe buscar y reemplazar el nombre anterior de la solución y todas las dependencias con el nuevo nombre. Si necesita examinar el archivo físico a través del explorador de archivos, hágalo.

Los archivos que normalmente se ven afectados son AssemblyInfo.cs, .slnun Properties > Application > Assemblynombre y espacio de nombres por defecto. Asegúrese de actualizarlos con el nuevo nombre.

Abra el explorador de archivos, si la carpeta con el nombre anterior aún existe, debe eliminarla. Luego limpie y cree la solución hasta que desaparezca el error. (Si es necesario, limpie y construya el proyecto uno por uno, especialmente el proyecto afectado).

John Carlo Diocadiz
fuente
0

En mi caso, el problema era que estaba haciendo referencia a un proyecto en el que comenté todos los .csarchivos.

Por ejemplo, ProjectApp hace referencia a ProjectUtility. En ProjectUtility solo tenía 1 .csarchivo. Ya no lo estaba usando, así que comenté todo el archivo. En ProjectApp no ​​estaba llamando a ninguno de los códigos de ProjectUtility, pero tenía using ProjectUtility;uno de los .csarchivos de ProjectApp . El único error que obtuve del compilador fue el error CS0006 .

Descomenté el .csarchivo en ProjectUtility y el error desapareció. Por lo tanto, no estoy seguro de si no tener código en un proyecto hace que el compilador cree un ensamblado no válido o no genere la DLL en absoluto. La solución para mí fue simplemente eliminar la referencia a ProjectUtility en lugar de comentar todo el código.

En caso de que se pregunte por qué comenté todo el código del proyecto referenciado en lugar de eliminar la referencia, lo hice porque estaba probando algo y no quería modificar el ProjectApp.csprojarchivo.

iheartcsharp
fuente