Archivo de metadatos ... no se pudo encontrar error al crear proyectos


98

Cada vez que inicio Visual Studio 2008, la primera vez que intento ejecutar el proyecto aparece el error CS0006 El archivo de metadatos ... no se pudo encontrar. Si hago una reconstrucción de la solución completa, funciona.

Alguna información sobre la solución:

  • Estoy construyendo en modo de depuración y Visual Studio se queja de no encontrar dll: s en la carpeta de lanzamiento.

  • Los proyectos de los que se queja Visual Studio son utilizados por muchos otros proyectos de la solución.

  • He cambiado la ruta de salida predeterminada de todos los proyectos a ...... \ build \ debug \ ProjectName y ...... \ build \ release \ ProjectName respectivamente. (Solo para obtener todos los archivos de compilación en un directorio)

  • Tengo el mismo problema con otra solución.

  • La solución fue creada desde cero.

  • Hay 9 proyectos en la solución. Una WPF y 8 bibliotecas de clases con dotnet 3.5.

¿Alguna idea sobre qué está causando este problema?


Respuestas:


133

Tuve un problema similar en el que "no se pudieron encontrar metadatos". en la propiedad de la solución, asegúrese de que la casilla de verificación "compilar" esté marcada en Build / Configuration Manager para cada proyecto.


16
Para cualquiera que no pueda encontrarlo, Build / Configuration Manager se refiere al menú Build -> elemento de menú Configuration Manager.
John Kurlak

4
Me acabo de encontrar con este problema, el motivo fue otro error que provocó que el proyecto al que se hace referencia no se compile correctamente. Esto fue en una caja limpia, por lo que no existían archivos dll de compilaciones anteriores exitosas. Corrija los errores y asegúrese de que un proyecto referenciado se compile correctamente.
Moulde

9
Ocasionalmente, incluso esto no ayudará, como señaló Nick anteriormente. En ese caso, cerrar y reiniciar VS siempre me ha funcionado. YMMV.
philofinfinitejest

3
No resolvió el problema. Reinicié VS y no resolvió el problema.
Shimmy Weitzhandler

26

Esto generalmente se debe a un proyecto al que se hace referencia en una solución diferente a la que arroja el error. Si limpia la otra solución o ramifica el código, es muy probable que vea este error. La solución es desplazarse hacia abajo en la lista de errores de "metadatos no encontrados" y mirar las referencias a los proyectos. 9/10 veces, verá una referencia rota a un proyecto que no está en esta solución. Agregue los proyectos para corregir los errores de referencia y reconstruya. Eso debería arreglarlo.

(Me encontré con esto hoy, y lo he hecho en el pasado, y esto SIEMPRE ha funcionado)


Solo los proyectos que están en mi solución se quejan.
The Muffin Man

7

Tuve este problema, no estoy seguro de si ayudará, pero el mío fue causado por tener dos versiones diferentes del mismo proyecto referenciadas por dos soluciones diferentes. Cuando construí la solución con la referencia al proyecto correcto primero, la segunda solución funcionaría bien, sin embargo, si limpiaba la primera solución e intentaba construir la segunda solución, fallaría con estos mensajes de error de referencia de dll.

La solución para mí fue averiguar que tenía dos proyectos con el mismo nombre que se habían duplicado accidentalmente y eliminar la referencia al antiguo proyecto incorrecto y agregar una referencia al nuevo.

En cualquier caso, parece que estos mensajes son una pista falsa, verificaría el resultado de su compilación y buscaría el primer proyecto que no se compila y verificaría con mucho cuidado las referencias en ese proyecto.


1
+1 por la nota sobre la inexactitud de estos mensajes. Esto surgió para mí porque las rutas a los ensamblajes a los que se hace referencia en una solución estaban rotas. Leerlos y recompilarlos resolvió el problema.
E. Rodríguez

6

Otra cosa que hay que verificar es la longitud de la ruta ... que también provoca que el archivo de metadatos no se encuentre y errores de compilación ... Acabo de cambiar el nombre de mis carpetas a rutas más cortas y voilá, las clases que no fueron reconocidas y permanecieron negras, se volvieron azules con solo cambiar el nombre la carpeta.


5

Para mí, tenía un proyecto referenciado en otro proyecto. No mostró que estuviera roto en la lista de referencias en la ventana del explorador de soluciones, pero lo eliminé y lo volví a leer de todos modos. ¡Se construye bien ahora!


De hecho, eliminé todas las referencias y las agregué nuevamente.

3

Realicé todos estos pasos en VS2012, pero seguí encontrándome con este problema al crear la solución en su conjunto (los proyectos individuales se construyeron bien sin errores).

Descubrí que si hace clic con el botón derecho en su Solución en el Explorador de soluciones y selecciona "Orden de compilación", puede ver el orden que VS está usando para reconstruir su solución. Probablemente esté fuera de control.

Puede corregir el orden de construcción haciendo clic en la pestaña Dependencias y seleccionando los proyectos que dependen de otros proyectos en la solución y verificando los proyectos de los que dependen. Una vez que haga clic en Aceptar y haga una reconstrucción de la solución, debería estar listo para comenzar.


2

La forma en que solucioné esto en el pasado en VS2005, así como ahora en VS2008, es asegurarme de que todas las dependencias sean correctas y que las referencias apunten a los proyectos, no a los dlls. Luego, revise y construya manualmente cada proyecto en orden de dependencia. Una vez que se compila el último, puede ejecutar una compilación de solución completa y está bien.

Esta respuesta es para referencia futura para otros, ya que sé que la pregunta tiene más de 15 meses.

Salud


2

Tengo un par de puntos que me gustaría hacer.

Si confía en el archivo de solución como archivo de compilación en MSBuild, asegúrese de agregar proyectos al archivo de solución en el orden en que desea que se compilen, es decir, según el orden de dependencia mutua de los proyectos. Esto se vuelve muy importante si tiene proyectos en la solución de los que dependen otros proyectos, pero las referencias se han agregado como "Referencias" en lugar de como "Referencias de proyectos".

Debe evitar eso como la plaga, pero en caso de que necesite hacerlo, al menos asegúrese de que los proyectos dependientes aparezcan antes en el archivo de solución.

Debe tener en cuenta que la forma en que Visual Studio genera el orden de construcción no es exactamente la misma que la forma en que lo hace MSBuild. Esto se debe a que MSBuild depende principalmente del archivo de proyecto para indicarle cuáles son las dependencias, mientras que Visual Studio también puede guardarlas en el archivo de solución. Por lo tanto, a veces puede ver situaciones en las que Visual Studio crea la solución a la perfección, pero MSBuild simplemente no puede hacerlo.

He tenido un par de casos en los que tuve que modificar manualmente el orden en el que aparecen los proyectos en el archivo de la solución, así como el orden en el que se enumeran los proyectos en el elemento ProjectReferences de un proyecto del sitio web en el archivo de la solución.

Espero que la información anterior ayude.


2

Si utiliza contextos de datos LinqtoSQL, por ejemplo, y falta el archivo .designer.cs, obtendrá el error No se pudo encontrar el archivo de metadatos.

Recrear el archivo designer.cs es fácil.

Abra el dbml usando la vista xml. Agregue una línea en blanco, luego elimínela y luego guarde. Eso debería regenerar su archivo designer.cs.

En algunas circunstancias, si tiene código dentro del código subyacente de su contexto de datos, esta solución no funcionará. En este caso, saque el código del código subyacente y colóquelo en el bloc de notas o algo. Haga el truco de agregar y luego eliminar una línea del DC y guardar. Ahora devuelva el código y guárdelo.


2

Tengo un problema similar cada vez que actualizo el proyecto desde SVN.
Otra solución para ASP.NET:

  1. Cierre el IDE.
  2. Elimina los archivos en formato C:\WINDOWS\microsoft.net\framework\v…\Temporary ASP.NET File\.

1

También experimenté este error y la causa fue que el Proyecto hace referencia a sí mismo. No tengo idea de cómo sucedió, pero eliminé la referencia y listo.


1

Primero asegúrese de que la casilla de verificación "compilar" esté marcada en Compilar -> Administrador de configuración para cada proyecto.

En caso de que ya tenga todos los proyectos seleccionados en el menú Compilar -> Administrador de configuración, y reiniciar el truco VS no funciona para usted, entonces debe encontrar la referencia del archivo (s) (podría ser dll o cs) en su proyecto y elimine esas referencias manualmente. Esos archivos / referencias deben mostrarse con un icono amarillo. El error definitivamente le guía en qué proyecto de solución debe estar investigando.

La razón de este error es porque ha eliminado archivos manualmente en el explorador de Windows y VS no ha actualizado la referencia y no ha intentado localizar el archivo que ya no existe.


1

En mi caso, descubrí que una de mis soluciones hacía referencia a algo que no estaba en la computadora (VBIDE). Una vez que eliminé la referencia ofensiva, el resto de los proyectos se construyeron correctamente. Espero que ayude a alguien.

Y en otra situación, moví un código de un proyecto a otro, y ese fragmento de código hacía referencia a Json.net. Agregué manualmente una referencia a Json.net pero eso hizo que surgiera el problema. Lo resolví instalando Json.net a través de NuGet y eso hizo que el problema desapareciera. Espero que ayude a alguien.


0

Ocurrió lo mismo. Tengo varias soluciones que hacen referencia a los mismos proyectos de biblioteca (.net 3.5). Me di cuenta de que cuando uno estaba integrado en la configuración debug / normal, y otro usando alguna otra directiva de compilador (modo sqlite / local), esto sucedería. Simplemente haga que ambos proyectos se construyan con las mismas directivas y debería estar bien.


0

Si ha agregado un nuevo proyecto a la solución, verifique que esté en la lista de compilación (consulte el Administrador de configuración)


0

Me quedé atascado con el problema de guardar cuando quise incluir un archivo dll generado por Matlab. Y finalmente lo resolví copiando un archivo .ctf, que significa certificado, supongo, y un .netmodule, que es necesario para el correcto funcionamiento del .dll, junto con el archivo .dll. ¡Y eso realmente funcionó! Por lo tanto, mi sugerencia es verificar si el .dll necesita otros archivos para llevarse bien.


0

Windows 7 Ultimate 32 Visual Studio 2008 SQL Server v2005

Recibí el mismo error. Y decidí eliminar y volver a agregar las referencias del proyecto. No pude volver a agregarlos porque la referencia de la base de datos en cada uno de los proyectos referenciados estaba en blanco.

Una vez que restablecí la referencia de la base de datos a la configuración correcta, pude compilar sin más problemas. Además, este fue mi primer intento de reconstruir este proyecto después de haber ramificado el código fuente en VSS.

Buena suerte


0

Tuve este error que fue causado por una de las dependencias de mi proyecto donde el nombre del ensamblado se había cambiado en el proyecto, pero la referencia no se actualizó. Por lo tanto, actualizar la referencia o cambiar el nombre del ensamblaje lo solucionará.


0

EE - En mi caso el problema estaba en el proyecto que tiene el Entity framework, abra el diagrama, arrastre cualquier tabla 2 cm :) y guarde, el VS actualizará todos sus enlaces al DB ... construya estos proyectos y construya la solución , Buildssss.


0

Lo único que me solucionó (porque no estoy ejecutando VS2010 en una cuenta de administrador) es mover manualmente la variable de entorno VS120COMNTOOLS de Variables del sistema a Variables del usuario.


0

Eliminar las entradas de todos los archivos fuente que ya no están presentes en el control de fuente y el sistema de archivos de su archivo .csproj funcionó para mí.


Enfoque detallado:

Bueno, mi siguiente 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 compilar nuevamente.

  2. Vaya a 'Explorador de soluciones' . Haga clic derecho en Solución. Vaya a Propiedades . Vaya a 'Administrador de configuración' . Compruebe si las casillas de verificación en 'Construir' están marcadas o no. Si alguno o todos están desmarcados, revíselos 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, desmárquelas, vuelva a verificar e intente compilar nuevamente.

  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 construcción' . Este orden de construcción es en el que se construye la solución. Verifique las dependencias del proyecto y el orden de construcción para verificar si algún proyecto (por ejemplo, 'proyecto1') que depende de otro (por ejemplo, 'proyecto2') está intentando construir antes que ese (proyecto2). Esta puede ser la causa del error.

  5. Verifique la ruta del .dll faltante:

    Compruebe la ruta del archivo .dll que falta. 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, ajuste el orden de construcción.


Sección 2):

Mi caso particular:

Probé todos los pasos anteriores con varias permutaciones y combinaciones con reiniciar VS varias veces. Pero no me ayudó.

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

Me encontré con 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 de origen (' 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 mencionadas 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 fuente que ya no están presentes en el control de fuente y el sistema de archivos de su archivo .csproj .


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.