c# - TypeLoadException的解决方法

标签 c# .net typeloadexception

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

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

TypeLoadException says 'no implementation', but it is implemented

解决方案对我来说很简单:删除 Visual Studio 2010 缓存并用于生成程序集文件的所有文件。


问题背景:

这里有更多的细节。我看到了类似 TypeLoadException 的内容:

Unhandled Exception: System.TypeLoadException: Method [method name] in type [type name] from assembly [assembly name], Version=x.x.x.x, Culture=neutral, PublicKeyToken=null does not have an implementation.

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

在此之前我尝试过:

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

...没有成功。

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

最佳答案

您是否在使用某种源代码控制并进行 checkin 和 checkout ?如果是,请确保 obj 和 bin 文件夹未 checkin 源代码管理。如果是,则将它们从源代码管理中删除,检查所有内容,然后重新构建您的解决方案。

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

相关文章:

c# - 返回结束晚于 10 天的拍卖

c# Computing Hashes - 在多个流之间保持状态

c# - 使用具有代码访问安全性的 C# 迭代器方法时出现问题

c# - TypeLoadException 未被 try/catch 捕获

c# - 自定义光标在 IE9 中不起作用?

c# - 删除 BoxCollider 时的 Unity3D MissingReferenceException

.net - 装箱和拆箱是否有相同的性能影响?

.net - 为什么这个简单的远程处理示例可以在我的笔记本电脑上运行,但不能在我的台式机上运行?

c# - 如何根据内容定义页面大小?

c# - 在 .NET 中使用正则表达式从字符串中提取标记