文件加载异常:无法加载文件或程序集System.Runtime,版本=4.2.0.0。

11
我有一个在完整的.NET Framework 4.6.1上运行的asp.net core 2.0应用程序,本地运行正常,但当我部署到Azure时出现以下错误: “FileLoadException:无法加载文件或程序集'System.Runtime,Version=4.2.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a'或其任何依赖项。找到的程序集清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040)”
在Debug / Release文件夹中,我有System.Runtime 4.1.2.0,但不知何故它仍能正常工作。
在“传统的” .NET Framework 中,我通常会在app.config中添加程序集重定向,但在此处我没有web.config。您是否有任何解决方法?

“我没有web.config”并不意味着您不能添加web.config。您尝试过了吗? - Lex Li
@LexLi - 也许我可以这样做,但是在 Debug/Release 文件夹中,我的 System.Runtime 版本为 4.1.2.0,并且出于某种原因它在本地运行良好。 - Sławomir Rosiek
4个回答

13

如果您创建了针对 [.NET Core] 平台的 ASP.NET Core 2.0 Web 应用程序,并将其部署到 Azure(或本地部署),然后将其改为针对 [.NET Framework] 进行部署,则可能会发生这种情况。

例如,如果您更改

<PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<PropertyGroup>
    <TargetFramework>net461</TargetFramework>
</PropertyGroup>

但是如果您在重新部署之前不删除Azure中的现有文件,则会出现此错误。

以下情况也可能会发生:

  • 首先使用Visual Studio 2017创建一个.NET Core项目:

    文件 -> 新建项目 -> Visual C# > Web > Asp.NET Core应用程序

  • 在第二个屏幕上选择[.NET Core]平台。

targeting .NET Core Platform

  • 将Web应用程序部署到Azure。
  • 然后创建一个新项目:

    文件 -> 新建项目 -> Visual C# > Web > Asp.NET Core应用程序

  • 在第二个屏幕上选择.NET Framework设置。

targeting the .NET Framework

如果在不删除Azure中现有文件的情况下重新部署,则会导致此错误。

希望有所帮助。


太好了,那就是这种情况。我已经从.NET Core框架更改为.NET Framework,并且只是上传了新文件而没有删除旧文件。 - Sławomir Rosiek
很高兴能帮到你。当我遇到同样的问题并决定花点时间深入挖掘时,我发现了你的问题。 - mcolhoun

11

我成功的做法是:

简单来说,清空你的项目中的bin文件夹并重建。我必须手动通过Windows资源管理器删除其中的内容,因为“清除”操作会留下一些文件。

任务完成。


0

虽然这是一篇旧帖子,但我遇到了同样的问题,我使用.NET 4.7.2构建了一个网站,在我的机器上一切正常,但一旦上传到客户服务器上,我就会得到以下错误:

无法加载所有类型“Umbraco.Web,Version = 8.0.0.0 System.Net.Http,Version = 4.2.0.0

经过一番思考和与客户的沟通,他们允许我访问他们的服务器,该服务器是Windows 2016。

他们的服务器没有安装4.7.2,所以一旦下载并安装,问题就解决了。

尽管这篇文章有很多评论https://github.com/dotnet/corefx/issues/22781,但如果可能的话,我建议检查服务器是否具有您正在针对的相同.NET框架。


0

我曾经遇到过同样的问题。我清空了本地机器上的bin文件夹,然后重新进行构建操作,再将新的bin文件夹复制到服务器上,问题就解决了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接