FileLoadException:无法加载文件或程序集System.Runtime,Version = 4.2.0.0

时间:2017-08-26 11:07:55

标签: .net asp.net-core .net-core

我有一个运行在完整.net框架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框架我曾经将程序集重定向添加到app.config但在这里我没有web.config。知道怎么解决这个问题吗?

4 个答案:

答案 0 :(得分:9)

如果您创建面向[.NET Core]平台的ASP.NET Core 2.0 Web应用程序,部署到Azure(或在本地部署),然后将其更改为以[.NET Framework]为目标,则会发生这种情况。

e.g。如果你改变

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

<PropertyGroup>
    <TargetFramework>net461</TargetFramework>
</PropertyGroup>

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

在以下情况中也会发生这种情况:

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

    档案 - &gt;新项目 - &gt; Visual C#&gt;网络&gt; Asp.NET核心应用程序

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

targeting .NET Core Platform

  • 将Web应用程序部署到Azure。
  • 然后使用:

    创建一个新项目

    档案 - &gt;新项目 - &gt; Visual C#&gt;网络&gt; Asp.NET核心应用程序

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

targeting the .NET Framework

重新部署而不删除Azure中的现有文件将导致此错误。

希望有所帮助。

答案 1 :(得分:3)

对我有用的是:

简单地,清空项目中的bin文件夹并重建。我不得不通过Windows资源管理器手动删除内容,因为“干净”的左文件开始播放。

工作完成。

答案 2 :(得分:0)

尽管这是一篇老文章,但在使用.NET 4.7.2构建站点时,我遇到了同样的问题,并且在我的机器上一切正常,一旦上载到客户端服务器,我会遇到以下错误:< / p>

  

无法从“ Umbraco.Web,版本= 8.0.0.0中加载所有类型   System.Net.Http,版本= 4.2.0.0

经过一番摸索和与客户端的沟通,他们允许我访问他们的Windows 2016服务器。

他们的服务器没有安装4.7.2,因此,一旦下载并安装,问题便得到解决。

尽管这篇文章有很多评论https://github.com/dotnet/corefx/issues/22781,但我还是建议您查看服务器是否具有与您所针对的.NET框架相同的评论。

答案 3 :(得分:0)

我有同样的问题。我清空了本地计算机上的bin文件夹,然后再次执行Build操作,然后将新的bin文件夹复制到服务器,它开始工作。