asp.net 未能加载文件或程序集System.Runtime,版本=4.1.2.0

nhn9ugyo  于 2023-01-18  发布在  .NET
关注(0)|答案(6)|浏览(249)

突然,在添加了一些NuGet包(大部分与ASPNET Identity相关)后,它开始显示以下错误:

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.

我的目标是. 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>

bin文件夹中没有System.Runtime.dll。
有什么想法吗?
我使用的是Visual Studio 2017 15.5.5。

    • 更新日期:**

我在. csproj文件中使用PackageReference条目,所以这不是packages.config的问题。
似乎未加载某些依赖项。

wkyowqbh

wkyowqbh1#

程序集绑定可能错误。
删除app.config或web.config AssemblyBinding节。然后在“包管理器”窗口中运行以下BindingRedirect:

Get-Project –All | Add-BindingRedirect

可选:如果升级所有项目的框架版本,则需要重新安装所有项目的所有Nuget包。要轻松执行此操作,请使用以下包管理器脚本:

Get-Project –All | % { Get-Package -ProjectName $_.ProjectName | % { update-package $_.Id -reinstall -ProjectName $_.ProjectName -ignoreDependencies } }

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

oalqel3c

oalqel3c2#

我最近将一个项目从net 462升级到net 471,在我的情况下,问题是net 462版本需要一些汇编重定向,但严重混淆了net 471。
解决方案是移除web.config中的所有程序集重定向项,并让Visual Studio重新计算它们-它们将显示为警告,单击该警告可以将它们重新添加到web.config中

x33g5p2x

x33g5p2x3#

我的ASP.NET项目在VS 15.8.4中已经是net471了。当我试图将现有的NuGet包更新到最新版本时,我会在IIS Express中启动项目时收到此错误。
错误图像格式异常:未能加载文件或程序集“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>

删除这两个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>
j2datikz

j2datikz4#

bin文件夹中没有System.Runtime.dll。
引用了软件包System.Runtime,但需要安装

  • 在Visual Studio的菜单中,转到工具〉NuGet包管理器〉管理解决方案的NuGet包...
  • 在活动的NuGet -解决方案窗口中,转到“已安装”选项卡,导航到System.Runtime by Microsoft。单击选择并查看侧窗口是否存在该项目的版本。如果不存在,请选择该项目并单击“安装”。
  • 构建解决方案。
sulc1iza

sulc1iza5#

我有这个问题,我花了一段时间才弄清楚。其他人可能有一个类似的设置,我的,因此有这个问题。
我在IIS(WCF服务)中运行了一个.NET Framework v4.8应用程序。它工作正常,直到我不小心将一个.NET Core 3. 1 DLL复制到bin目录中。IIS显然试图托管.NET Core DLL,而运行时并不存在。一旦我删除了DLL,它就完全崩溃了。希望这对其他人有帮助:)

g0czyy6m

g0czyy6m6#

我已经通过向web.config添加以下内容解决了这个问题:

<compilation debug="true">
  <assemblies>
    <add assembly="System.Runtime, Version=4.0.20.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </assemblies>
</compilation>

您的特定程序集版本可能会有所不同。

相关问题