装配撞毁我的asp.net 4.0(assembly crashing my asp.net 4.0

2019-06-23 14:21发布

我得到这个错误“无法加载从装配型“System.Runtime.CompilerServices.ExtensionAttribute‘mscorlib程序,版本= 4.0.0.0,文化=中性公钥= b77a5c561934e089’。”

每当我有quartz.net的DLL文件在我的网站的bin目录,并在代码中引用它。 我相信它有错误的.NET框架做。

我的asp.net网站使用目标框架4.0,我使用了.NET 4 quartz.net文件

我的IIS应用程序池(经典.NET库)设置为运行.NET 4.0 frework。

我不知道从哪里开始,但我知道肯定有什么取出石英,我期待和好如初(减去调度)

Answer 1:

这是在最终版本中引入的,因为Quartz.Net兑4.5框架编制的问题。 看看这个线程 ,其中报告问题。 该DLL的固定版本。



Answer 2:

ExtensionAttribute类是需要使用扩展方法在C#。 在.NET Framework 4.0中这个类是在装配System.Core.dll,但在.NET框架4.5级被转移到mscorlib.dll中。 我想,问题是,Quartz.dll中(或其他一些总成)编译计算机上安装这样在mscorlib.dll期待ExtensionAttribute的.NET Framework 4.5,这是不存在的计算机上,只有.NET框架4.0。

我认为,计算机上重新编译石英没有的.NET Framework 4.5应该解决的问题。 同样在服务器中安装的.NET Framework 4.5,IIS应该帮助,但我不会推荐它,因为它仍然是测试版。



Answer 3:

您是否尝试过增加MSCORLIB组装和设置复制本地为true的参考?

阅读在这里 :

这个问题有ILMerge.exe是如何运行的事情。 转发类型(在这种情况下,ExtensionAttribute类型)被认为是一个非重大更改,在某种意义上说,它是透明的,在支持的方案,在运行时,以及我们的编译器。 编译器编译器或类似工具(这ILMerge是之一)有望支撑转发类型,就像他们应该支持运行时的其他功能。 此外,运行编译器的支持方式是明确的,完全引用相应的多靶向组的引用程序集。



文章来源: assembly crashing my asp.net 4.0