2011-12-15 35 views
9

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

这个页面有一些特别好的信息,但似乎并没有专门解决我所看到的,我怎么解决它(可能是错误的):

TypeLoadException says 'no implementation', but it is implemented

为我解很简单:删除Visual Studio 2010缓存并用于生成汇编文件的任何文件。


背景的问题:

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

未处理的异常:System.TypeLoadException:方法从组件[组件名] [方法名]在 类型[类型名称],版本= XXXX, 文化=中性公钥= null没有实现。

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

在此之前我曾尝试:

  • 清洁/重建
  • 重新启动的Visual Studio(2010)
  • 重启
  • 删除我的集DLL输出文件夹(BIN \ 86 \调试)

...没有成功。

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

+2

不要在问题中发布解决方案。只要发布问题,就好像您仍然遇到问题,然后将解决方案作为答案发布。最好等一天左右 - 让人们有时间发布自己的解决方案,你可能会发现自己比自己的更好。 – ChrisF 2011-12-15 23:19:48

回答

2

您是否使用某种源代码管理并执行检入和检出内容?如果是,请确保obj和bin文件夹未签入到源代码管理中。如果他们从源代码管理中删除它们,请检查所有内容,然后重新构建解决方案。

0

我在Visual Studio 2015中遇到过这种问题,并通过使用解决方案的NuGet包管理器来解决此问题,以重新安装以某种方式安装在不同版本中的软件包。