C#未能从程序集“mscorlib, Version=4.0.0.0, Culture=neutral, ……”中加载类型“……”。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#未能从程序集“mscorlib, Version=4.0.0.0, Culture=neutral, ……”中加载类型“……”。相关的知识,希望对你有一定的参考价值。

未能从程序集“mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“System.Collections.Generic.IReadOnlyDictionary`2”。

注:之前没这问题,自从安装过4.5的框架卸载后,重新修改vs2010就这样了。

属于4.5的程序集,那么你现在只有4.0的程序集,你就要换一种实现方式了。

1234System.Web.Extensionsusing System.Web.Script.Serialization;javascriptSerializer js = new JavaScriptSerializer();js.xxx

一. 基本概念

C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。

C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。

二. 设计目标

C#旨在设计成为一种"简单、现代、通用",以及面向对象的程序设计语言,此种语言的实现,应提供对于以下软件工程要素的支持:强类型检查、数组维度检查、未初始化的变量引用检测、自动垃圾收集(Garbage Collection,指一种自动内存释放技术)。软件必须做到强大、持久,并具有较强的编程生产力。此种语言为在分布式环境中的开发提供适用的组件开发应用。

为使程序员容易迁移到这种语言,源代码的可移植性十分重要,尤其是对于那些已熟悉C和C++的程序员而言。对国际化的支持非常重要。C#适合为独立和嵌入式的系统编写程序,从使用复杂操作系统的大型系统到特定应用的小型系统均适用。

参考技术A 你用的是 Newtonsoft.Json ?
看看你是不是用了.net 4.5版的 Newtonsoft.Json 了追问

这个就是4.0的,不是4.5,之前都是使用4.0.因为有dll是4.5的,所以安装的4.5框架,现在没用到了,卸载时,还把VS2010的安装的4.0框架都卸载了,现在使用修复跟安装都不行

追答

为什么要卸载 .Net4.5 ? 重新装回去吧。

追问

现在4.5安装回去,一调试或者直接使用就报错了。已经恢复之前的系统,看了下是框架4.5问题,类库4.5的,vs2010只支持选择到4.0.

参考技术B 你的JsonConvert这个变量的定义是什么?自己写的帮助类?追问

不是,这是一个json生成跟解析的dll类库,之前一直没问题。这个工程放到别人电脑也没问题-------------json生成类库名字刚好图片值那里有。

追答

刚才根据楼下的回答,去查了一下MSDN,居然没查到Newtonsoft的技术文档,只查到一些别人问的问题。所以我也不知道当前这个类,属于哪个版本的程序集。


如果楼下说的是对的,属于4.5的程序集,那么你现在只有4.0的程序集,你就要换一种实现方式了。

System.Web.Extensions
using System.Web.Script.Serialization;
JavaScriptSerializer js = new JavaScriptSerializer();
js.xxx

本回答被提问者采纳

C#提示未能找到类型或命名空间名称”Renderer“(是不是缺少 using 指令或程序集引用)怎么解决?

参考技术A 可以根据提示自动添加相应的命名空间的。追问

可是怎么添加?它属于哪个命名空间,我在VS2010的所有属性中搜索到的是ToolStrip的一属性,可用的是一类。

追答

我用图给你说明吧。看下图,同样的错误提示:

你把鼠标悬停到这个名称上就会出现下图红框中的一个小标志:

你将鼠标放到这个标志上,就会编程下图的样子:

是不是旁边多了一个向下的小箭头,你单击一下这个箭头就会弹出一个下拉列表,如下图:

下拉列表中就会提供出可能的命名空间列表,一般就是选第一个。你单击一下列表中正确的那个命名空间的名称,就表示using该命名空间。然后回到程序的using列表中,会看到下图红框中的using命名空间:

OK !问题解决,错误消失。

追问

下拉列表中命名空间列表空空如也。这是不是要下载这样的一个类集,然后添加到引用中?

追答

这个是你自定义的一个类吗?还是你引用其他自定义的Dll动态链接库里的类或方法?
如果是引用其他自定义的Dll动态链接库里的类或方法,你检查看看你有没有将这个脚本导入到你的工程中并用using引用它。

本回答被提问者采纳

以上是关于C#未能从程序集“mscorlib, Version=4.0.0.0, Culture=neutral, ……”中加载类型“……”。的主要内容,如果未能解决你的问题,请参考以下文章

C# 未能加载文件或程序集或它的某一个依赖项。需要强名称程序集

C# 引入Sqlite 未能加载文件或程序集“System.Data.SQLite

C# 未能找到类型或命名空间名称“Form1”(是不是缺少 using 指令或程序集引用?)

ArcGIS engine C#开发出现未能加载程序集ESRI.ArcGIS.AxControls

C#提示未能找到类型或命名空间名称”Renderer“(是不是缺少 using 指令或程序集引用)怎么解决?

C#动态加载dll 时程序集的卸载问题