while visual tiempo studio permiten modificar mientras how esta enable ejecutando ejecucion editar continuar codigo code change cambios and c# visual-studio visual-studio-2012 configuration edit-and-continue

c# - tiempo - Visual Studio-obtención del error "Archivo de metadatos ''XYZ'' no se pudo encontrar" después de editar continuar



modificar codigo en tiempo de ejecucion c# (22)

¡Tuve este problema por días! Probé todas las cosas de arriba, pero el problema siguió volviendo. Cuando se muestra este mensaje, puede tener el significado de "uno o más proyectos en su solución no se compilaron limpiamente", por lo que nunca se escribieron los metadatos del archivo. Pero en mi caso, ¡no vi ninguno de los otros errores del compilador! Seguí trabajando para tratar de compilar cada solución de forma manual, y solo después de obtener VS2012 para revelar realmente algunos errores del compilador que no había visto anteriormente, este problema desapareció.

Estuve engañando con órdenes de compilación, sin órdenes de compilación, haciendo referencia a dll de depuración (que se compilaron manualmente) ... ¡NADA parecía funcionar, hasta que encontré estos errores que no aparecían al compilar toda la solución!

A veces, al compilar, parece que el compilador existirá en algunos errores ... He visto esto en el pasado donde después de solucionar problemas, las compilaciones posteriores muestran NUEVOS errores. No sé por qué sucede y es algo raro que tenga estos problemas. Sin embargo, cuando los tienes así, es un verdadero dolor tratar de descubrir qué está pasando. ¡Buena suerte!

Me encontré con un problema que es realmente molesto.
Cuando depuro mi software, todo funciona bien, pero si llego a un punto de interrupción y edito el código, cuando trato de continuar obtengo un error:
Metadata file ''XYZ'' could not be found

Después de mirar por un tiempo, encontré algunos problemas similares , pero todos estaban relacionados con una falla de compilación, que no es mi caso (esto sucede solo después de editar-continuar).

Lo que he intentado hasta ahora:

  • Mi código está compilando y ejecutándose.
  • Limpié la solución y reinicié VS.
  • Me aseguré de que el proyecto del archivo faltante se esté compilando para la configuración que estoy ejecutando (en el administrador de configuración).
  • Construí manualmente el proyecto del archivo perdido.

Alguna información extra :

  • No importa lo que cambie, igual recibo el mismo error (el cambio no está relacionado con el archivo que falta).
  • Esto también ocurre cuando hago una pausa y continúo (no solo puntos de interrupción)
  • Estoy ejecutando el proyecto usando una configuración personalizada (administrador de configuración ...). Cuando lo ejecuto usando la configuración de Debug predeterminada, el error no ocurre.

¿Algunas ideas?


¿Estás utilizando una herramienta de generación de código de base de datos como SQLMETAL en tu proyecto?

Si es así, puede enfrentar un problema de transición de pluralizado a no simplificado.

En mi caso, he notado que algunos viejos nombres de tabla pluralizados (*) (sobre los cuales SQLMETAL agrega, de forma predeterminada, una letra " s " al final) hacen referencia a las clases generadas por SQLMETAL.

Dado que recientemente he inhabilitado la Pluralización de nombres , después de volver a generar algunas clases relacionadas con la base de datos, algunos de ellos perdieron su prefijo " s ". Por lo tanto, todas las referencias a clases de tabla afectadas se volvieron inválidas. Por esta razón, tengo varios errores de compilación como los siguientes:

''xxxx'' no contiene una definición para ''TableNames'' y no se puede encontrar ningún método de extensión ''TableNames'' que acepte un primer argumento de tipo ''yyyy'' (¿falta una directiva using o una referencia de ensamblado?)

Como sabe, solo tomo un error para evitar que un ensamblaje se compile. Y esa es la característica que falta, es enlazable a ensamblajes dependientes, lo que causa que el "archivo de metadatos" original XYZ ''no se haya podido encontrar "

Después de arreglar las tablas de clase afectadas, las referencias manualmente a sus nombres actuales (sin unificar), ¡finalmente pude hacer que mi proyecto volviera a la vida!

(*) Si la opción Visual Studio> menú Herramientas > Opciones > Herramientas de base de datos > Diseñador de O / R > Pluralización de nombres está habilitada, algún generador de código SQLMETALl agregará una letra " s " al final de algunas clases de tabla generadas, aunque la tabla tiene sin sufijo "s" en la base de datos de destino. Para obtener más información, consulte http://msdn.microsoft.com/en-us/library/bb386987(v=vs.110).aspx

¡Espero eso ayude!


Acabo de toparme con este problema y después de una hora de dar vueltas me di cuenta de que había agregado un archivo aspx a mi producto que tenía el mismo nombre que una de mis clases de Linq-To-Sql .
Clase y página donde "Queue".
Cambié la página a QueueMgr.aspx y todo funcionó perfectamente.


Asegúrese de que todos sus proyectos dependientes estén usando la misma versión de .NET Framework. Tuve el mismo problema causado por un proyecto dependiente usando 4.5.1, mientras que todos los demás usaban 4.5. Cambiar el proyecto de 4.5.1 a 4.5 y reconstruir mi solución me solucionó este problema.


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 ("el archivo de metadatos no se pudo encontrar") junto con 1 error que decía "El archivo de origen no se pudo abrir (''Error no especificado'') ''.

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

Reinicie VS e intente construir nuevamente.

Ve a ''Solution Explorer''. Haga clic derecho en la solución. Ir a Propiedades Vaya a ''Administrador de configuración''. Compruebe si las casillas de verificación debajo de ''Build'' están marcadas o no. Si alguno o todos están desactivados, compruébalos y vuelva a intentar compilar.

Si la (s) solución (es) anterior (es) 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 de nuevo.

Orden de compilación y dependencias del proyecto:

Ve a ''Solution Explorer''. Haga clic derecho en la solución. Vaya a ''Dependencias del proyecto ...''. Verá 2 pestañas: ''Dependencias'' y ''Orden de compilación''. Este orden de compilación es el que construye la solución. Compruebe las dependencias del proyecto y el orden de compilación para verificar si algún proyecto (digamos ''proyecto1'') que depende de otro (digamos ''proyecto2'') está tratando de compilar antes que ese (proyecto2). Esta podría ser la causa del error.

Compruebe la ruta del .dll perdido:

Compruebe la ruta del .dll faltante. Si la ruta contiene espacio o cualquier otro carácter de ruta no válida, quítelo e intente construir nuevamente.

Si esta es la causa, entonces ajusta el orden de compilación.


Cierre VS, busque y elimine la carpeta ''paquetes'' desde fuera de Visual Studio. Reiniciar VS y compilar -> todas las dependencias se vuelven a instalar


En general, este tipo de error viene con errores humanos, como si cambiamos el espacio de nombres de alguna manera incorrecta, o cambiando los nombres de las carpetas del explorador por el proyecto actual, etc., donde el compilador no puede detectar a veces.

Encontré el mismo error, para resolver cuál intenté algunos pasos. Por favor, siga todos los pasos:

  1. Limpiar toda la solución
  2. Haga clic con el botón derecho en cada proyecto en su solución, vaya a Propiedades y establezca su espacio de nombres predeterminado y su nombre de ensamblado predeterminado igual que en su código (es decir, espacio de nombres antes del nombre de la clase)
  3. Compruebe los nombres de carpeta para cada proyecto yendo a través del explorador (donde está la solución de su proyecto). Si no coincide con los nombres de su proyecto, hágalo similar (como el paso 2 ).
  4. Elimine todas las referencias de cada proyecto relevante para otra de la misma solución y vuelva a agregarlo.
  5. En la carpeta de la Solución del proyecto, encontrará el archivo de proyecto Visual c #. Haga clic derecho y abrir con el Bloc de notas. En sus líneas iniciales encontrará líneas para cada proyecto como a continuación:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "**Client**", "**Client** / **Client**.csproj", "{4503E259-0E3B-414A-9074-F251684322A5}" EndProject

Compruebe nuevamente los nombres de carpeta (he resaltado en negrita) y haga que sea similar a lo que hizo en el paso 2 .

  1. Limpia toda la solución de nuevo

  2. Construya la solución (si no funciona intente construir una persona después de limpiarla nuevamente)


Finalmente, lo que resolvió el problema fue:

  1. Limpie cada proyecto individualmente ( clic con el botón derecho > Limpiar ).
  2. Reconstruya cada proyecto individualmente ( clic con el botón derecho > Reconstruir ).
  3. Reconstruye el proyecto de inicio.

Supongo que por alguna razón, solo limpiar la solución tuvo un efecto diferente a la limpieza específica de cada proyecto individualmente.

Editar:
Según el comentario de @maplemale, parece que a veces también se requiere eliminar y volver a agregar cada referencia.


Hasta donde puedo decir, esto sucede cuando las dependencias del proyecto se arruinan por cualquier motivo (mientras que todas las referencias entre proyectos permanecen intactas). En muchos casos, NO es un problema de código. Y para aquellos que tienen más de unos pocos proyectos, pasar por uno de ellos a la vez NO es aceptable.

Es fácil restablecer las dependencias del proyecto

  1. Seleccione todos los proyectos y haga clic derecho descargar
  2. Seleccione todos los proyectos y haga clic derecho en Recargar
  3. Reconstruir la solución

Para aquellos que tienen un problema en su código o algún otro problema que está causando este problema, obviamente tendrás que resolver ese problema primero.


He tenido este problema y ha comenzado después de importar nuestra solución a TFS como un nuevo proyecto. Me encontré con este tema y encontré una solución rápida con algo de inspiración de sus respuestas.

Todo lo que tenía que hacer era reconstruir el proyecto que supuestamente había perdido su archivo de metadatos y listo, problema resuelto.


Lo único que funcionó para mí fue eliminar el archivo de Opciones de Usuario de Solución ( .suo ) . Tenga en cuenta que este es un archivo oculto.

Para ubicar este archivo, cierre su estudio Virsual y busque .suo desde el explorador de archivos dentro de su proyecto.

PD: un nuevo archivo .suo se creará nuevamente cuando reconstruyas tu proyecto y es de esperar que este nuevo creado no te dé problemas.

Espero que eso ayude a alguien a deshacerse de este error molesto :).


Mis 5 centavos.

Este problema comenzó después de una solución de limpieza amplia.

Logré que el problema desapareciera estableciendo la configuración de la Solución Activa en: Build -> Configuration manager para lanzar. A continuación, compilar y configurar de nuevo para depurar de nuevo. La construcción tuvo éxito después de eso.


Ocurre cuando un dll de proyecto está fallando y se hace referencia a él por el número de proyectos. Entonces primero corrígelo y luego compila individuos.


Para una nueva compilación, podría ser que algunas dependencias no estén instaladas. Para mí fue Crystal Reports.


También hay otra razón tonta que debes comprobar con paciencia ... como se me ocurrió después de perder 4 horas buscando respuestas:

La historia para mí fue que accidentalmente cambié una pequeña línea de código entre miles de archivos de clase c # y luego intenté reconstruir la solución. Como se podría imaginar, terminé con más de 40 archivos de metadatos faltando errores y con 1 error de compilación entre ellos, que no revisé cuidadosamente, ¡pensando simplemente que todos los errores eran los mismos!

después de 4 horas buscando y luego revisando por error mi lista de errores, encontré ese error de código tonto, lo arreglé, compilé y luego desapareció el error.

No es una buena respuesta a su problema, pero espero que mi caso no sea el mismo que el suyo.


Tuve este error. Seguí todas las soluciones aquí pero nada funcionó. Estaba usando Visual Studio 2013 Professional. No pude hacer que las reconstrucciones de proyectos individuales funcionaran y finalmente descubrí que había una dependencia circular en mis referencias. Visual Studio hace un buen trabajo normalmente de advertencia si está agregando una referencia a algo que hace referencia atrás, pero por alguna razón no lo hizo en este caso. Agregué una referencia a un proyecto que hacía referencia al proyecto en el que estaba trabajando, y lo aceptó. VS error quizás?


Tuve esto y logré solucionarlo usando esta respuesta SO: no se pudo encontrar el archivo de metadatos ''.dll''

Tuve que desmarcar todas las casillas, hacer clic en Aplicar, volver a habilitar todas las casillas de verificación y luego hacer clic en Aplicar nuevamente, pero solucionó el problema.


Una posible razón podría ser que haya actualizado algunos de sus proyectos (en la solución) a una versión superior, por ejemplo, de .NET 4.0 a 4.5. Esto sucedió en mi caso cuando abrí la solución en VS 2013 (creada originalmente con VS 2010 y .NET). 4.0). Cuando abrí en VS 2013, mi proyecto C ++ se actualizó a .NET 4.5 y comencé a ver el problema.


XYZ no se pudo encontrar porque aún no está construido ...

Haga clic con el botón derecho en la solución y compruebe las Dependencias del proyecto, la Orden de compilación del proyecto también debería cambiar según las dependencias que se hayan establecido.


Yo tuve el mismo problema. En mi caso, por error, había separado todos los proyectos del proyecto con el método principal como aplicación de consola.

Para resolver fui a cada proyecto que no sea el que tiene la función principal y hago clic con el botón derecho> propiedad> tipo de salida> biblioteca de clases


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 en un nombre determinado, y luego lo renombra, el espacio de nombres tendrá el nombre anterior. Y la compilación tomará la ruta anterior para encontrar el archivo .dll y .exe . Para evitar esto, abra el archivo .csproj de cada espacio de nombres con un archivo de texto, y encuentre la ruta anterior en el archivo.

eliminar esto, limpiar y reconstruir la solución. Esto funcionó para mí. Pasé todo un día trabajando en este problema.


me sucedió porque tuve un choque extraño en los espacios de nombres: tenía AssemblyA con espacio de nombres AssemblyA.ParentNamespace que define ClassA y en el mismo ensamblado otro espacio de nombres con el nombre AssemblyA.ParentNamespace.ChildNamespace que define una ClassA diferente (pero con el mismo nombre)

Tenía entonces en AssemblyA.ParentNamespace IInterfaceB que tenía un método que al principio devuelve IEnumerable y una bruja de ClassB implementa IInterfaceB

Posteriormente, modifiqué el método en ClassB para devolver IEnumerable, pero olvidé actualizar la definición de IInterfaceB, por lo que el método todavía estaba devolviendo IEnumerable. El hecho divertido fue que la solución aún era compatible si reconstruía todo, pero las pruebas hace referencia a que AssemblyA no funcionó y devuelve el error "No se pudo encontrar el archivo de metadatos".

actualizando InterfaceB para que devuelva correctamente IEnumerable ya que su implementador ClassB sí resolvió el problema, desafortunadamente el mensaje de error era vago y también el hecho de que la compilación funcionó me hace pensar que tal vez haya algo que arreglar en el compilador