我有一个运行.net4的webapi应用程序,我试图在服务器上运行。 api在本地工作正常。
无法从程序集'mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'加载类型'System.Runtime.CompilerServices.ExtensionAttribute'。
我需要更改什么才能让它在我的服务器上运行?
答案 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。