WebAPI RC'System.Runtime.CompilerServices.ExtensionAttribute'来自程序集'mscorlib,

时间:2012-06-05 11:58:59

标签: asp.net-mvc-4 asp.net-web-api

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

  

无法从程序集'mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'加载类型'System.Runtime.CompilerServices.ExtensionAttribute'。

我需要更改什么才能让它在我的服务器上运行?

5 个答案:

答案 0 :(得分:8)

您确定要编译.NET 4而不是.NET 4.5吗?我们将ExtensionAttribute移动到.NET 4.5中的mscorlib(因此我们可以将扩展方法放在mscorlib中)。如果您针对.NET 4.5编译并尝试在.NET 4上运行它,我希望看到类似的错误。

编辑:实际上,如果您正在使用ILMerge,则需要在targetplatform开关中使用.NET 4.0引用程序集的路径,而不是实现的路径,如本博文中所述:{{3} }

答案 1 :(得分:1)

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

这些通常是:

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

有关详细信息,请参阅Marc's blog post

答案 2 :(得分:0)

同时检查项目所依赖的DLL。我遇到了同样的问题,发现一个DLL导致了这个问题。这个DLL是我本地机器上的旧版本(针对.NET 4.0编译),其中该站点通过localhost运行良好,但是在站点发生故障的实时服务器上是较新版本(针对.NET 4.5编译)。

答案 3 :(得分:0)

我遇到了同样的问题,并在安装.NET Framework 4.5后为我的网站创建了一个新的应用程序池

答案 4 :(得分:0)

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

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