我只是想分享我学到的东西。这里有很多关于TypeLoadExceptions的帖子,但是似乎没有一个我需要的答案。

该页面上有一些特别好的信息,但似乎并没有特别说明我所看到的内容以及如何解决它(可能是错误的):

TypeLoadException says 'no implementation', but it is implemented

对我而言,解决方案很简单:删除Visual Studio 2010缓存中的所有文件,并将其用于生成程序集文件。

问题的背景:

这里有一些更多细节。我看到像这样的TypeLoadException:



我确实有一个实现...我想,直到我查看了ILDASM的程序集。我发现我正在将旧版本的DLLs写入接口(interface)已经过时的ouput文件夹中。我的输出文件夹不是默认设置,而是项目文件夹外部的相对路径(也许VS无法完全处理?)。在对项目进行清理/重建之后,项目的“obj”文件夹是我的项目文件夹的所有子文件夹中唯一在DLL上具有正确日期戳的文件夹。由于某些原因,“bin”文件夹仍然具有旧版本。我想这就是要复制到输出文件夹的内容。

在此之前,我尝试过:

  • 清理/重建
  • 重新启动Visual Studio(2010)
  • 重新启动
  • 删除输出文件夹中的我的程序集DLL(bin\x86\debug)

  • ...没有成功。

    我不确定为什么VS没有将“obj”中的正确程序集复制到输出文件夹...引用了过期程序集的项目是正确的

    最佳答案

    您是否正在使用某种源代码管理并进行检入和 check out 工作?如果是,请确保没有将obj和bin文件夹检入到源代码管理中。如果要从源代码管理中删除它们,请检入所有内容,然后重新构建解决方案。

    关于c# - TypeLoadException的解决方案,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8527966/

    10-10 16:30