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

And*_*yev 19 asp.net .net-framework-version visual-studio-2017

突然,在添加一些NuGet包(主要是与ASPNET标识相关)后,它开始显示此错误:

FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)

我有针对.Net Framework 4.7.1的目标.我尝试安装NuGet包System.Runtime 4.3.0,它没有帮助.web.config文件有一个引用:

<dependentAssembly>
  <assemblyIdentity name="System.Runtime" publicKeyToken="B03F5F7F11D50A3A" culture="neutral"/>
  <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0"/>
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

bin文件夹中没有System.Runtime.dll.

有任何想法吗?

我使用Visual Studio 2017 15.5.5.

更新:

我在.csproj文件中使用PackageReference条目,因此它不是packages.config的问题.

似乎没有加载某些依赖项.

OzB*_*Bob 22

程序集绑定可能是错误的。

删除 app.config 或 web.config AssemblyBinding 部分。然后在包管理器窗口中运行这个 BindingRedirect:

Get-Project –All | Add-BindingRedirect
Run Code Online (Sandbox Code Playgroud)

可选:如果升级所有项目的框架版本,则需要重新安装所有项目的所有 Nuget 包。要轻松做到这一点,请使用此包管理器脚本:

Get-Project –All | % { Get-Package -ProjectName $_.ProjectName | % { update-package $_.Id -reinstall -ProjectName $_.ProjectName -ignoreDependencies } }
Run Code Online (Sandbox Code Playgroud)

然后运行上面的绑定重定向代码。

  • 希望我能将其投票为最佳答案。希望我在将所有项目从 .NET 4.6 转换为目标 .NET 4.8 之前就发现了“可选”位...这会节省我大量的时间来与令人恼火的 NuGet 包管理器搏斗。包控制台是更好的方法,但文档很少,很难弄清楚您需要做什么。 (2认同)

Pau*_*her 17

我最近将这个项目从net462升级到net471,我的问题是net462版本需要的一些程序集重定向,但是对net471非常困惑.

解决方案是删除web.config中的所有程序集重定向条目,并让Visual Studio重新计算它们 - 它们将显示为警告,可以单击该警告以将它们重新添加到web.config


小智 11

当这个开始发生时,我的ASP.NET项目已经在VS 15.8.4中的net471上了.当我尝试将现有的NuGet包更新到最新版本时,我会在IIS Express中启动项目时收到此错误.

BadImageFormatException:无法加载文件或程序集"System.Runtime"或其依赖项之一.

我能够通过修改项目的web.config文件来解决这个问题.

  <dependentAssembly>
    <assemblyIdentity name="System.Runtime.Serialization.Primitives" publicKeyToken="B03F5F7F11D50A3A" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.3.0" />
  </dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

删除这两个System.Runtime依赖项的bindingRedirect行在我的项目中解决了这个问题,在我的web.config中留下了这个.

  <dependentAssembly>
    <assemblyIdentity name="System.Runtime.Serialization.Primitives" publicKeyToken="B03F5F7F11D50A3A" culture="neutral" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
  </dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

  • 我建议从头开始重新组装项目,以正确的方式一点一点地做所有事情,并观察每个步骤中是否发生任何错误。 (2认同)

Alf*_*ace 6

bin 文件夹中没有 System.Runtime.dll。

引用了 System.Runtime 包,但需要安装它

  • 在 Visual Studio 的菜单中,转到工具 > NuGet 包管理器 >管理解决方案的 NuGet 包...

  • 在活动的 NuGet - 解决方案窗口中,转到选项卡已安装,导航到 Microsoft 的 System.Runtime。单击选择并查看侧窗是否存在该项目的版本。如果没有,请选择项目并单击安装。

  • 构建解决方案。