我在其中一个引用的程序集上遇到以下错误:
Could not load type 'System.Func`2' from assembly 'MyAssembly, ...
我会说实话,我不认为我上次看到System.TypeLoadException错误时会记得,或者如果我看到它,解决方案很明显。我的第一直觉是看MSDN had to say about it:
当引发TypeLoadException时抛出 公共语言运行库找不到 装配,内部的类型 装配,或无法加载类型。
也许我读错了,但是说CLR根本找不到这个类型?如果这不是mscorlib中的内容,那可能会更有意义。这些都是在带有VS2010的.NET4上构建的,因此没有单声道或其他奇怪的库问题。我在想这个吗?发生了什么事?
答案 0 :(得分:27)
问题是您的版本不匹配。确保所有程序集都是针对.NET 4编译的。
答案 1 :(得分:25)
重构后我收到了这个错误。我有两个项目编译成具有相同名称的DLL。
检查"程序集名称"在项目的属性' "用途"部分。
答案 2 :(得分:13)
我不确定您的具体方案,但程序集绑定日志查看器(fuslogvw)通常在调试类型加载问题时非常有用。更多详情请见http://msdn.microsoft.com/en-us/library/e74a18c4.aspx
答案 3 :(得分:3)
如果您更改了正在尝试加载但在GAC中仍有旧版本的程序集,也可能会出现此问题。它会尝试加载GAC版本,而不是您在VS项目中引用的版本。
答案 4 :(得分:1)
当我在清理工作中将一个类从一个项目移动到另一个项目时,我遇到了这个错误。在查看所有其他可能的原因后,重新加载我的解决方案中的每个项目,一切正常。
答案 5 :(得分:0)
当我重构将一些类移动到他们自己的库时,我遇到了这个异常,并引用了它试图加载到新库(使用NuGet获取)的库的不同版本,而不是我在原始项目。
解决这个问题的方法是在旧项目中打开NuGet Manager,并将相应的软件包更新为我在新库中使用的相同版本。
答案 6 :(得分:0)
如果您在不同项目中安装了不同版本的NuGet软件包,则可能会出现此问题。为了识别这些情况,