2011-04-17 13 views
22

Estoy recibiendo el siguiente error en una de mis ensamblados de referencia:Cómo depurar errores System.TypeLoadException en .NET?

Could not load type 'System.Func`2' from assembly 'MyAssembly, ...

Voy a ser honesto, no creo que puedo recordar la última vez que vi a un error de System.TypeLoadException o si lo vi, la solución fue obvia. Mi primer impulso fue a ver qué MSDN had to say about it:

TypeLoadException se lanza cuando el tiempo de ejecución de lenguaje común no puede encontrar la asamblea, el tipo dentro del conjunto , o no se puede cargar el tipo.

Quizás estoy leyendo esto mal, ¿pero está diciendo que el CLR simplemente no puede encontrar el tipo? Eso podría tener más sentido si esto no fuera algo que estuviera en mscorlib. Todo esto fue construido en la parte superior de .NET4 con VS2010, por lo que no hay problemas de biblioteca únicos u otros extraños. ¿Estoy más pensando en esto? ¿Que esta pasando?

+1

¿Está seguro de que el ensamblado al que se hace referencia también está compilado para .NET 4? – Gabe

+0

¡Buenas atrapa a mi hombre! Por alguna razón, el proceso de compilación volvió a v2 en los ensamblados a los que se hizo referencia. Ahora necesito averiguar por qué esos ensamblados están construyendo en v2, pero anteriormente habían estado funcionando bien. Dios mío, pasé tanto tiempo en esto. Si quieres responder esto, te daré la mejor respuesta. – kertosis

+0

Consulte también [¿Qué podría estar causando una System.TypeLoadException en una prueba de Visual Studio Unit?] (Http://stackoverflow.com/q/5735673) –

Respuesta

22

El problema es que tiene una falta de coincidencia en sus versiones. Asegúrese de que todos sus ensamblados estén compilados para .NET 4.

12

No estoy seguro acerca de su situación específica, pero el visor de registro de ensamblaje (fuslogvw) suele ser muy útil para depurar problemas de carga de tipo. Más detalles en http://msdn.microsoft.com/en-us/library/e74a18c4.aspx

+0

Disculpe el enlace 1.1. Mi error. Pero, ¿cómo es que el registro de fusión no es relevante en las excepciones de carga de tipo de depuración? – Ragesh

+2

Para referencia futura, puede hacer que el enlace vaya automáticamente a la última versión simplemente eliminando los paréntesis al final. Entonces en lugar de esto: http://msdn.microsoft.com/en-us/library/e74a18c4(v=VS.71).aspx, tendrías esto: http://msdn.microsoft.com/en-us /library/e74a18c4.aspx –

+0

eliminando el voto en negativo. Estaba confundiendo TypeLoadException con TypeInitializationException. –

21

Recibí este error después de la refactorización. Tenía dos proyectos compilando en DLL con el mismo nombre.

Compruebe el "Nombre del ensamblado" en la sección de propiedades de los proyectos "Aplicación".

+1

Hice un proyecto separado para mis pruebas unitarias con el mismo nombre que la solución original, ¡vaya! – andy

+1

Muchos años después y esto acaba de salvar mi tocino después de un par de horas de investigación –

1

Recibí este error cuando moví una clase de un proyecto a otro en un esfuerzo de limpieza. Después de ver todas las otras razones posibles, volví a cargar cada uno de los proyectos en mi solución y todo funcionó.

  1. Haga clic derecho sobre el nombre del proyecto en el explorador de soluciones
  2. Seleccione Descargar Proyecto
  3. clic derecho sobre el nombre del proyecto en el explorador de soluciones
  4. Seleccionar cargar proyecto
3

También puede obtener esta si cambia el ensamblaje que intenta cargar, pero todavía tiene una versión anterior en el GAC. Intenta cargar la versión GAC no a la que hace referencia en su proyecto VS.

0

Encontré esta excepción cuando rediseñé para mover algunas clases a su propia biblioteca, y mencioné una versión diferente de la biblioteca que está intentando cargar en la nueva biblioteca (adquirida con NuGet) que la que había estado utilizando en el proyecto original .

Lo que lo solucionó fue abrir NuGet Manager en el proyecto anterior y actualizar el paquete apropiado para que sea la misma versión que estaba usando en mi nueva biblioteca.

Cuestiones relacionadas