2011-12-15 19 views
9

Solo quería compartir algo que aprendí. Hay muchos mensajes sobre TypeLoadExceptions aquí, pero ninguno de ellos parecía tener la respuesta que necesitaba.Solución a TypeLoadException

Esta página tiene algunos particularmente buena información, pero no parecía para tratar específicamente lo que estaba viendo y cómo lo resolví (podría ser malo):

TypeLoadException says 'no implementation', but it is implemented

la solución para mí fue simple: elimine cualquier archivo que Visual Studio 2010 guarde en caché y use para generar archivos de ensamblaje.


Antecedentes del problema:

Aquí están algunos detalles más. Que estaba viendo un TypeLoadException como:

Excepción no controlada: System.TypeLoadException: Método [nombre del método] en tipo [nombre de tipo] desde el conjunto de [nombre de ensamblado], versión = xxxx, Culture = neutral, PublicKeyToken = null no tiene una implementación.

Tuve una implementación ... pensé, hasta que miré el montaje con ILDASM. Descubrí que estaba obteniendo versiones antiguas de DLL escritas en mi carpeta de salida que tenía interfaces obsoletas. Mi carpeta de salida no era la configuración predeterminada, sino una ruta relativa fuera de la carpeta del proyecto (¿quizás VS no puede manejar esto por completo?). Después de limpiar/reconstruir en el proyecto, la carpeta "obj" del proyecto era la única carpeta en todas las carpetas secundarias de mi carpeta de proyecto que tenía la marca de fecha correcta en la DLL. La carpeta "bin" por alguna razón todavía tenía una versión anterior. Y supongo que eso era lo que se copiaba a la carpeta de salida.

Antes de esto había intentado:

  • limpia/reconstrucción
  • reiniciar Visual Studio (2010)
  • reiniciar
  • borrar mis archivos DLL de ensamblaje en la carpeta de salida (bin \ x86 \ debug)

... sin éxito.

No estoy seguro de por qué VS no estaba copiando el ensamblaje correcto en "obj" a la carpeta de salida ... El proyecto que hacía referencia al ensamblado obsoleto era correcto.

+2

No publique la solución en la pregunta. Simplemente publique la pregunta como si todavía experimentara el problema, luego publique la solución como una respuesta.Es mejor esperar un día más o menos; dele tiempo a las personas para que publiquen sus propias soluciones; es posible que encuentre una mejor que la suya. – ChrisF

+0

Tengo que estar de acuerdo con @ChrisF, deberías haber publicado la pregunta primero y luego la respuesta A pesar de que aprecio la respuesta (me ayudó) podrías haber obtenido algunos puntos de reconocimiento también, y tal vez haber visto respuestas de otras personas que no has respondido No pienses en – iMortalitySX

Respuesta

2

¿Está utilizando algún tipo de control de fuente y haciendo check in y echando un vistazo a cosas? En caso afirmativo, asegúrese de que las carpetas obj y bin no estén registradas en el control de origen. Si lo están, elimínelos del control de origen, verifique todo y vuelva a generar su solución.

0

Tuve este tipo de problema en Visual Studio 2015 y lo resolví utilizando el administrador de paquetes NuGet para la solución, para reinstalar un paquete que de alguna manera se había instalado en diferentes versiones.

Cuestiones relacionadas