web-dev-qa-db-ja.com

ファイルまたはアセンブリSystem.Runtime、Version = 4.1.2.0をロードできませんでした

突然、いくつかの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の問題ではありません。

一部の依存関係がロードされていないようです。

19
Andrey Korneyev

最近、プロジェクトをnet462からnet471にアップグレードしました。私の場合の問題は、net462バージョンで必要なアセンブリリダイレクトでしたが、net471がひどく混乱していました。

解決策は、web.config内のすべてのアセンブリリダイレクトエントリを削除し、Visual Studioでそれらを再計算できるようにすることでした。それらは警告として表示され、クリックするとweb.configに再追加されます。

17
Paul Hatcher

私のASP.NETプロジェクトは、VS 15.8.4でこれが起こり始めた時点ですでにnet471にありました。既存のNuGetパッケージを最新バージョンに更新しようとしたときに、IIS Expressでプロジェクトを起動すると、このエラーが表示されました。

BadImageFormatException:ファイルまたはアセンブリ 'System.Runtime'またはその依存関係の1つを読み込めませんでした。

プロジェクトの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>
9
UncheckedError

BinフォルダーにはSystem.Runtime.dllはありません。

パッケージSystem.Runtimeは参照されますが、インストールする必要があります

  • Visual Studioのメニューで、[ツール]> [NuGetパッケージマネージャー]> ソリューションのNuGetパッケージの管理...に移動します。

  • アクティブなNuGet-ソリューションウィンドウで、[インストール済み]タブに移動し、MicrosoftのSystem.Runtimeに移動します。プロジェクトのバージョンが存在する場合は、シングルクリックで選択し、サイドウィンドウを確認します。そうでない場合は、プロジェクトを選択して「インストール」をクリックします。

  • ビルドソリューション。

4
Alfred Wallace