4

我有一个运行 .net4 的 webapi 应用程序,我正试图在服务器上工作。该 api 在本地运行良好。

无法从程序集“mscorlib,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089”加载类型“System.Runtime.CompilerServices.ExtensionAttribute”。

我需要改变什么才能让它在我的服务器上工作?

4

5 回答 5

8

您确定您是针对 .NET 4 而不是 .NET 4.5 进行编译的吗?我们在 .NET 4.5 中将 ExtensionAttribute 移至 mscorlib(因此我们可以将扩展方法放在 mscorlib 中)。如果您针对 .NET 4.5 编译某些内容并尝试在 .NET 4 上运行它,我预计会看到这样的错误。

编辑:实际上,如果您使用 ILMerge,则需要在 targetplatform 开关中使用 .NET 4.0 引用程序集的路径,而不是实现的路径,如本博文所述:http://www.mattwrock .com/post/2012/02/29/What-you-should-know-about-running-ILMerge-on-Net-45-Beta-assemblies-targeting-Net-40.aspx

于 2012-06-29T15:53:19.303 回答
1

另一种可能的解决方案(其他有相同的例外)可能是您的构建服务器没有 .net 4.0 参考程序集,在安装 .net 4.5 后,您需要从您的开发框中复制它们。

这些通常是这样的:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0

有关更多详细信息,请参阅Marc 的博客文章

于 2013-02-25T23:01:41.493 回答
0

I had the same issue and fixed by creating a new application pool for my site after installing .NET Framework 4.5

于 2013-07-18T13:33:37.930 回答
0

我对 .NET 的经验很少,我对 .NET 也有同样的问题System.Runtime.CompilerServices.ExtensionAttribute

解决方案:删除项目引用,对 Framework 4.5 的引用,因为在我的情况下,因为我没有安装这个框架。

于 2014-09-19T17:02:56.153 回答
0

还要检查您的项目所依赖的 DLL。我遇到了同样的问题,发现一个 DLL 导致了这个问题。此 DLL 是我的本地计算机上的旧版本(为 .NET 4.0 编译),站点通过 localhost 运行良好,但在站点失败的实时服务器上是较新的版本(为 .NET 4.5 编译)。

于 2012-11-14T20:02:38.427 回答