Error "No se pudo encontrar el archivo de metadatos '... \ Release \ project.dll' en Visual Studio"

135

Recientemente comencé a recibir este mensaje al azar:

No se pudo encontrar el archivo de metadatos '... \ Release \ project.dll' en Visual Studio

Tengo una solución con varios proyectos en ella. El modo de compilación actual es Debug y todas las configuraciones de los proyectos están configuradas en Debug. Pero cuando intento ejecutar el proyecto principal, a veces me da algunos errores, todos los cuales son "No se pudo encontrar el archivo de metadatos '... \ Release \ projectX.dll' - y, mira, dice acerca de RELEASE carpeta, aunque el modo actual es Depurar. ¿Por qué? Traté de buscar referencias a "Release \ projectX.dll" dentro de todos los archivos de solución, y encontré uno en el archivo ResolveAssemblyReference.cache.

Hice una buena búsqueda en Internet y encontré algunas personas con un problema similar, pero no había solución, o al menos no había una solución que funcionara.

Traté de eliminar referencias a esos proyectos y leerlos, pero en algún momento empiezo a recibir estos errores nuevamente.

Parece un error. ¿Por qué busca proyectos referenciados en las carpetas de lanzamiento cuando siempre uso el modo de depuración?

PD. Para aquellos que encontraron este problema: no pude resolverlo de una manera fácil. Desapareció solo después de reinstalar Windows :(

codificador nocturno
fuente
Lo primero para problemas como este es eliminar el archivo .suo y reconstruirlo.
venteo el
Este problema puede ocurrir si un dll al que se hace referencia usa una versión diferente (inferior) de .net Framework
m4ngl3r
Tenía este problema constantemente hasta que apagué las compilaciones paralelas. Creo que hay un error en la comprobación de dependencia de compilación paralela, posiblemente relacionada con el almacenamiento en caché de información obsoleta. (Para que conste, yo uso compilaciones paralelas ahora, y acabo de construir de nuevo si el problema ocurre, que por lo general funciona.)
yoyo
No se pudo encontrar el
Michael Freidgeim

Respuestas:

138

Todos están en lo correcto ... intente todo ... (en orden de poco a mucho tiempo perdido)

  1. ¿Tienes un mal código? Arregla eso primero.
  2. Solución limpia y reiniciar Visual Studio
  3. Eliminar / Agregar referencias
  4. Verifique su orden de construcción con proyectos más grandes y verifique
  5. Reconstruir manualmente subproyectos
  6. Copie dlls manualmente entre proyectos en carpetas bin asociadas
  7. Ve a tomar un café, juega al pinball y vuelve mañana ... mientras tanto, puedes pensar en otra cosa.
beauXjames
fuente
17
Necesita limpiar todos los ERRORES y lograr que las soluciones / proyecto sean estables.
Ravi Ram
Esto sucede debido a la diferencia de nombres en el nombre de la carpeta y el nombre del espacio de nombres. Si crea un espacio de nombres con un nombre determinado, y luego lo renombra, el espacio de nombres tendrá el nombre antiguo. Y la compilación tomará el camino anterior para encontrar el archivo .dlly .exe. Para evitar esto, abra el .csprojarchivo de cada espacio de nombres con un archivo de texto y busque la ruta anterior en el archivo. elimine esto, limpie y reconstruya la solución. Esto funcionó para mí. Pasé un día entero trabajando en este problema.
Sooraj
Si no tiene éxito y está tomando tiempo, solo vuelva a intentar algunas de las cosas básicas primero. Comencé a construir subproyectos, todavía recibí errores, pero luego cerré y volví a abrir VS, reconstruí la solución, todo funcionó.
Chris Halcrow
66
Tenía un espacio de nombres y nombres de proyecto que no coincidían en un dll de referencia hecho en casa. Además, se creó con .NET 4.5.2 en lugar de 4.5. ¡Hombre!
Jess
1
Intenta eliminar el archivo .suo. Es relativamente común que se corrompa.
Timbo
21

Tuve exactamente el mismo problema. Gran solución de estudio visual con más de 50 proyectos.

Todas las referencias se agregaron como proyectos. El orden de compilación del proyecto fue correcto (haga clic derecho en el proyecto y seleccione el orden de compilación).

Sin embargo, al construir algunos de los proyectos de nivel superior, el proyecto "raíz" del que dependían no se construyó.

El problema era que estos proyectos no fueron seleccionados para construir bajo la configuración actual (no sé cómo sucedió esto).

Para verificar esto, seleccione "Administrador de configuración" (menú Generar) e verifique si los proyectos problemáticos están configurados para generar.

dapim
fuente
¡Gracias! Esto funcionó muy bien para mí cuando, por alguna razón, mi configuración de lanzamiento no creó uno de mis proyectos.
Vectovox
¡Me salvaste la vida!
Chethan Shetty
16

Cuando dice que eliminó referencias a esos proyectos y las volvió a agregar, ¿cómo las volvió a agregar exactamente? ¿Usó la pestaña "Examinar" en el cuadro de diálogo "Agregar referencia" en Visual Studio? ¿O usó la pestaña "Proyectos" (que enumera los proyectos vecinos en su solución)?

Editar : si utiliza la pestaña "Examinar" y agrega manualmente la referencia a su archivo .dll que se encuentra en la carpeta / Release, Visual Studio siempre buscará el archivo .dll en esa ubicación, independientemente del modo en que se encuentre. actualmente en (Depurar o liberar).

Si eliminó el archivo .dll real de la carpeta Release (ya sea manualmente o haciendo "Solución limpia"), su referencia se romperá porque el .dll no existe.

Sugeriría eliminar la referencia a ProjectX.dll y agregarla nuevamente, pero esta vez, use la pestaña "Proyectos" en el cuadro de diálogo "Agregar referencia". Cuando agrega una referencia de esta manera, Visual Studio sabe dónde obtener el .dll apropiado. Si está en modo de depuración, lo obtendrá de la carpeta / Debug. Si está en modo Release, la carpeta / Release. Su error de compilación debería desaparecer, y ya no estará haciendo referencia (incorrectamente) a un Release .dll mientras esté en modo de Depuración.

Darren Steinweg
fuente
Usé la
1
Para mí, Visual Studio había creado un projectname.v11 del tipo "Opciones de usuario de la solución Visual Studio". Eliminé este archivo y reinicié y todo estaba bien.
Wes Grant
15

Bueno, mi respuesta no es solo el resumen de todas las soluciones, sino que ofrece más que eso.

Sección 1):

En soluciones generales:

Tuve 4 errores de este tipo ('no se pudo encontrar el archivo de metadatos') junto con 1 error que decía 'No se pudo abrir el archivo de origen (' Error no especificado ')'.

Intenté deshacerme del error 'no se pudo encontrar el archivo de metadatos'. Para eso, leí muchas publicaciones, blogs, etc. y descubrí que estas soluciones pueden ser efectivas (resumiéndolas aquí):

  1. Reinicie VS e intente construir de nuevo.

  2. Vaya a 'Explorador de soluciones' . Haga clic derecho en Solución. Ir a propiedades . Vaya a 'Administrador de configuración' . Verifique si las casillas de verificación en 'Construir' están marcadas o no. Si alguno o todos están desmarcados, verifíquelos e intente construir de nuevo.

  3. Si las soluciones anteriores no funcionan, siga la secuencia mencionada en el paso 2 anterior, e incluso si todas las casillas de verificación están marcadas, desactívelas, verifique nuevamente e intente construir de nuevo.

  4. Orden de construcción y dependencias del proyecto:

    Vaya a 'Explorador de soluciones' . Haga clic derecho en Solución. Vaya a 'Dependencias del proyecto ...' . Verá 2 pestañas: 'Dependencias' y 'Orden de compilación' . Este orden de compilación es aquel en el que se construye la solución. Verifique las dependencias del proyecto y el orden de compilación para verificar si algún proyecto (por ejemplo, 'proyecto1') que depende de otro (por ejemplo, 'proyecto2') está intentando compilarse antes de ese (proyecto2). Esta podría ser la causa del error.

  5. Verifique la ruta del archivo .dll faltante:

    Verifique la ruta del archivo .dll faltante. Si la ruta contiene espacio o cualquier otro carácter de ruta no válido, elimínelo e intente construir nuevamente.

    Si esta es la causa, entonces ajuste el orden de construcción.


Sección 2):

Mi caso particular:

Intenté todos los pasos anteriores con varias permutaciones y combinaciones reiniciando VS pocas veces. Pero no me ayudó.

Entonces, decidí deshacerme de otro error que estaba encontrando ('El archivo de origen no se pudo abrir (' Error no especificado ')').

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

Intenté los pasos mencionados en ese blog y me deshice del error 'No se pudo abrir el archivo fuente (' Error no especificado ')' y sorprendentemente también me deshice de otros errores ('no se pudo encontrar el archivo de metadatos') .


Seccion 3):

Moraleja de la historia:

Pruebe todas las soluciones como se menciona en la sección (1) anterior (y cualquier otra solución) para deshacerse del error. Si nada funciona, según el blog mencionado en la sección (2) anterior, elimine las entradas de todos los archivos de origen que ya no están presentes en el control de origen y el sistema de archivos de su archivo .csproj .


Vikram
fuente
1
Votamos por esta respuesta porque nos estábamos encontrando con este problema para un compañero de trabajo. Su sistema de alguna manera perdió la mayoría / todas sus dependencias, por lo que al compilar, no se compilaría en el orden correcto, porque el "archivo de metadatos para" whatever.dll "no existe". Acabamos de recorrer todos sus proyectos con otro sistema para validar todas las dependencias que necesitaba para cada proyecto.
jmbertucci
Bien ... me alegro de que mi respuesta fue de alguna ayuda para usted.
Vikram
11

He tenido este problema antes y la única forma de resolverlo es ejecutar Clean Solution y luego reiniciar Visual Studio.

jasonh
fuente
1
No ayuda en mi situación, después de poco tiempo el problema aparece nuevamente.
nightcoder
Esto es lo que me arregló.
splintor
3
Este también funcionó para mí también. Hizo múltiples limpiezas y nada funcionó. Una vez que hice una limpieza y reinicié, comenzó a funcionar nuevamente. Que molesto.
Ricky
8

Para mí, generalmente, el marco de destino está desactivado (4.5.2 en lugar de 4.6) Si arregla el marco de destino del proyecto para que coincida con el marco de destino de la solución y la compilación, se creará un nuevo .dll.

Adam Weitzman
fuente
Tuve el mismo problema para un proyecto que se creó con una versión anterior de Visual Studio. Después de actualizar VS, los proyectos se crearon con una versión más reciente de .NET y causaron el problema de DLL no encontrado. (Vaya al panel de propiedades del proyecto para ver / editar la versión .NET). ¡Gracias!
Tony S Yu
Gracias millones de veces (esa es la cantidad de otras soluciones que probé). Esto funcionó. Por alguna razón, la biblioteca que estoy agregando estaba dirigida a una versión de marco .NET diferente a todos los demás proyectos
Nour Lababidi,
1
Agregué un nuevo proyecto de Biblioteca de clases (dll) al que se hizo referencia en varios otros proyectos. El nuevo dll fue .NET Framework 4.8, mientras que todos los demás proyectos fueron 4.7.2. Cambiar el marco de Target (en las propiedades del Proyecto) a 4.7.2 solucionó esto para mí. Gracias adam!
iCode
7

Vuelva a abrir Visual Studio como administrador.

Sebastian Patten
fuente
3

La mayoría de las respuestas dicen que necesita eliminar las bibliotecas de su solución, esto es cierto, pero cuando vuelve a agregar las bibliotecas, se mostrará el error nuevamente. Debe verificar si todas las bibliotecas a las que se hace referencia tienen un marco .net compatible con el marco .net de su solución. Luego arregle todos los errores en su código y reconstruya la solución.

Oscar Canek
fuente
3

¿Verificó la configuración del administrador de configuración? En la esquina superior derecha del cuadro de diálogo de configuración del proyecto.

A veces sucede que entre todas las entradas de la versión entra una entrada de depuración. Si es así, la dependencia automática creada por el gráfico de dependencia de la solución se confunde.

Totonga
fuente
Yo lo revisé. Todos los proyectos tienen la misma configuración.
Nightcoder
2

También he visto este error en soluciones en las que tengo varios proyectos (generalmente proyectos netTiers en los que he actualizado uno o más de los subproyectos para apuntar al marco 4.0). Puede ser problemático eliminarlo. Sin embargo, a menudo se puede resolver, primero arreglando todos los demás errores en los subproyectos (por ejemplo, cualquier referencia faltante), reconstruyendo individualmente esos subproyectos, luego eliminando / agregando cualquier referencia a esos subproyectos en Visual Studio. Personalmente, he tenido poca suerte resolviendo este error limpiando solo la solución.

Shaun3180
fuente
1
Eliminar las referencias de otros proyectos (mis proyectos de UI y de prueba, por ejemplo), corregir los errores (en el proyecto Core), construir y luego volver a agregar esas referencias fue el truco para mí.
Ken Pespisa
2

Recientemente nos encontramos con este problema después de actualizar a Office 2010 desde Office 2007: tuvimos que cambiar manualmente las referencias en nuestro proyecto a la versión 14 de Office Interops que usamos en algunos proyectos.

Espero que eso ayude: nos tomó unos días resolverlo.

Anthony Collins
fuente
2

En mi caso fue causado por dos cosas (VS.2012):

1) Uno de los proyectos se configuró para AnyCPU en lugar de x86

2) Un proyecto al que se hizo referencia tenía de alguna manera la casilla de verificación "Compilar" desmarcada.

Verifica tu Build | Configuration Manager para obtener una visión general de lo que se está creando y para qué plataforma. También asegúrese de verificarlo tanto para Depuración como para Liberación, ya que pueden tener configuraciones diferentes.

Señor de los guiones
fuente
2

En mi caso, tuve algunos errores en mi código. Visual Studio mostró el error que tenía en lugar de los errores reales, como errores de sintaxis o nombres de clase desconocidos. Intente limpiar la solución y construir proyecto tras proyecto. De esta manera descubrirá los errores reales.

Una vez más, esto es lo que causa el error para .

bytecode77
fuente
2

Tuve este problema y me tomó mucho tiempo resolverlo. El problema surgió cuando eliminé proyectos de la solución y los reemplacé con paquetes nuget.

La solución parecía estar bien, pero el archivo .csproj todavía contenía esos proyectos varias veces como referencia.

Parece que VS no limpia ese archivo adecuadamente. Todavía hacía referencia a los proyectos eliminados bajo el capó. Cuando se eliminan manualmente las referencias del archivo csproj, todo funciona de nuevo. wohoo

Tarmo Elfving
fuente
2

Este problema se debe a archivos pdb o CodeContracts.

Para resolverlo:

  1. Limpie su carpeta de salida y reconstruya la solución.

  2. Vuelva a configurar CodeContracts o desactívelo para la compilación temporal.

usuario1889439
fuente
2

Tenemos ese problema con bastante frecuencia, pero solo con referencias a proyectos C ++ / CLI de proyectos C #. Obviamente, es un error en el fondo de Visual Studio que Microsoft decidió no solucionar, porque es "demasiado complejo" y prometieron una revisión del sistema de compilación C ++ que ahora está dirigido a Visual Studio 2010.

Eso fue hace algún tiempo, y tal vez la solución incluso entró en Visual Studio 2008; No lo seguí más. Sin embargo, nuestra solución típica era

  • Cambiar configuración
  • Reiniciar Visual Studio
  • Construye la solución
Sin memoria
fuente
¿Después de que este problema desaparezca para siempre o solo temporalmente? ¿Y qué quiere decir con "configuración de interruptor"? Por ejemplo, siempre uso la configuración de depuración. ¿Qué tengo que hacer?
Nightcoder
Desaparece temporalmente. En realidad, puede que no sea una solución para usted si nunca cambia la configuración entre depuración y lanzamiento. O cambiar a liberar y luego depurar podría solucionarlo, quién sabe;)
OutOfMemory
Bueno, hace unos días cambié a lanzamiento, construí la solución y luego volví a Depurar. Después de esto el problema mutado :): ahora consigo sólo el 1 por ejemplo de error en lugar de unos pocos - es como otros proyectos han sido "fijo" :)
nightcoder
2

Yo tuve el mismo problema.

Visual Studio 2013 solo me dijo que no podía hacer referencia a él y que no podía encontrar los metadatos. Cuando abrí mi solución (que tiene varios proyectos), decía que estaba usando proyectos inferiores a la versión de marco de uno de mis proyectos.

Así que cambié todo a la versión 4.5, y funcionó nuevamente.

Jamie
fuente
Esta fue la misma resolución a la que llegué mientras tenía este problema. Algunas de las referencias usaban un Framework más alto que mi aplicación base, cuando cambié el Framework en la aplicación base a 4.5.2 (lo mismo que las otras referencias), el problema desapareció. Sin embargo, VS no dijo nada sobre las diferentes versiones de framework ...
NoLifeKing
1

Me parece recordar que tuve un problema similar hace unos meses. Lo resolví temporalmente copiando la DLL a la que se hace referencia en la carpeta Release, satisfaciendo así las expectativas de Visual Studio. Más tarde, descubrí la referencia a la DLL de lanzamiento en mi código real. Debería intentar hacer una búsqueda en todo el proyecto para \ release \ project.dll.

Además, he notado que los proyectos de prueba de unidad de Visual Studio a veces ponen un atributo "DeploymentItem" en cada uno de los métodos de prueba que apuntan a su DLL de destino, y si cambia entre Debug y Release, Visual Studio puede confundirse si la DLL ya no está En la ubicación esperada. En mi experiencia, estos atributos se pueden eliminar de forma segura si no los colocó usted mismo como parte de un escenario de "implementación única".

Robert Harvey
fuente
1

Tuve este problema y se debió a un método no válido en la biblioteca infractora (dll) que no devolvió un valor, por ejemplo

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

}

Cuando comenté esto, todo lo compilado :)

Vidar
fuente
Iba a escribir esta misma respuesta, pero noté que ya mencionaste este problema. Tuve el mismo problema, donde no devolví el valor booleano y el mensaje de error para ese problema se ocultó entre toneladas de otros problemas generados después del hecho.
gonzobrains
1

A veces, VS2010 cambia mi configuración de cualquier CPU a plataformas mixtas. Cuando esto sucede, recibo este mensaje de error.

Para resolverlo, vuelvo a Cualquier CPU:
1. Haga clic derecho en la solución y seleccione propiedades.
2. Haga clic en Propiedades de configuración y luego en el botón Administrador de configuración ...
3. En Plataforma de solución activa, seleccione Cualquier CPU

Chico
fuente
1

Encuentro que esto generalmente se me ocurre cuando todavía tengo una declaración de método en una interfaz, que implementa una clase, pero que luego eliminé y también olvidé eliminarla de la interfaz. Por lo general, solo guardo la solución completa cada 30 minutos y luego vuelvo a una versión anterior si no puedo encontrar el error.

Hans Rudel
fuente
1

Terminé eliminando mis referencias (las había agregado correctamente usando la pestaña de proyectos, y solían construir muy bien), editando manualmente mis archivos .csproj y eliminando entradas extrañas que no pertenecían, y configurando mis salidas para depuración y lanzamiento, x86 y x64 y cualquier CPU para que sea "\ bin": lo construí una vez, luego volví a agregar la referencia (nuevamente, usando la pestaña de proyectos), y todo comenzó a funcionar nuevamente para mí. No tuve que reiniciar Visual Studio en absoluto.

BrainSlugs83
fuente
1

Para mí, esto fue causado por el objetivo de compilación que se reescribió para no generar el dll. Al eliminar esto para recurrir al objetivo de compilación predeterminado, se solucionó el problema.

Jim Jeffries
fuente
1

en mi caso estaba trabajando en una sucursal de master. Así que revisé la rama maestra, ejecuté una compilación y luego revisé mi rama. Se solucionó el problema. Si ya está en master, le sugiero que consulte la confirmación anterior y luego la compile.

jayasurya_j
fuente
1
¡Guauu! He probado tantas opciones, nada funcionó. ¡Pero esto solucionó el problema! Gracias amigo :)
Tharindu
0

Parece suceder cuando comprueba una solución con múltiples proyectos que tienen referencias entre ellos, y no la ha creado antes. Si tiene referencias directas a los dlls, en lugar de hacer referencia al proyecto, recibirá este mensaje. Siempre debe usar la pestaña Proyectos en el cuadro de diálogo Agregar referencia para agregar una referencia a un proyecto en la misma solución. De esta manera, VS puede conocer el orden correcto en el que construir la solución

Juancentro
fuente
0

Lo mismo me sucedió hoy como lo describe Vidar.

Tengo un error de compilación en una biblioteca auxiliar (al que hacen referencia otros proyectos) y, en lugar de decirme que hay un error en la biblioteca auxiliar, el compilador aparece con una lista de errores de tipo MetaFile-not-found. Después de corregir el error de compilación en Helper Library, los errores de MetaFile desaparecieron.

¿Hay alguna configuración en VS para mejorar esto?

Santoo
fuente
0

Yo tuve el mismo problema. Noté que mi contexto db (EF4) que estaba ubicado en el proyecto dll no fue reconocido por alguna razón. Lo eliminé y creé otro en su lugar. y eso me resolvió.

mashta gidi
fuente
0

Tuve el mismo problema hoy.

Mi aplicación, una aplicación de Windows Forms, accidentalmente tenía una referencia a sí misma. Extraño.

Una vez eliminado, el error desapareció.

La referencia se agrega cada vez que arrastro un control de usuario, ubicado en el proyecto de formularios Windows Forms, a un formulario.

Christophe Geers
fuente
0

Yo tuve el mismo problema. Eliminar y agregar manualmente los dlls no ayudó. ClassLibraries no compiló todos los proyectos y faltaba en la carpeta ... \ bin \ Debug para el proyecto [porque limpié la solución por error]. Dado que la biblioteca de clases no se compiló, eso significa que puede haber algunos errores en algún lugar de uno de esos subproyectos .

Solución: dado que mis dlls estaban allí para la carpeta ... \ bin \ Release , intenté reconstruir en modo Release y encontré un error en una línea en uno de los subproyectos. Resolver el error y reconstruir la solución eliminó el error de compilación.

Shaz
fuente
0

Para mí, Visual Studio había creado un projectname.v11 del tipo "Opciones de usuario de la solución Visual Studio". Eliminé este archivo y reinicié y todo estaba bien.

Wes Grant
fuente