web-dev-qa-db-ja.com

Install-Package:「System.Runtime」への参照を追加できませんでした

次のコマンドを使用して、Autofac nugetパッケージをプロジェクトにインストールしようとしています

Install-Package -Prerelease Autofac

しかし、エラーで失敗します

Install-Package : Failed to add reference to 'System.Runtime'. Please make sure that it is in the Global Assembly Cache.

.NET Framework 4.5.2(プロジェクトが対象とするバージョン)を再インストールしようとしましたが、「。NET Framework 4.5.2は既にインストールされています」というメッセージが表示されました。ただし、C:\Windows\Assembly\ にとって System.Runtime.dllは完全に一致するものを検出しません(ただし、System.Runtime.ni.dll、(それらは実際に同じアセンブリであることを示すようです)...)。

これについて何ができますか?

project config

更新:どうやらGACの場所について混乱していたようです。 Amy 私を啓発し、C:\Windows\Microsoft.NET\Assembly代わりにIdofind System.Runtime.dll。 Visual Studioが機能しないのはなぜですか?

19
Tomas Aschan

同じ問題がありました。

ここで解決策を見つけました: https://github.com/aspnet/WebHooks/issues/18

それを修正するために、<Reference Include="System.Runtime"/>から.csproj
プロジェクトのファイルを再構築し、機能しました。

26
Roboblob

グローバルアセンブリキャッシュにあることを確認してください。

これは過度に役に立たないエラーメッセージです。それは本当の問題を説明するだけでなく、回避策を見つけるためにあなたを劇的に惑わせます。 .NET Frameworkアセンブリのアセンブリ参照は、neverGACから取得する必要があります。失敗モードの種類は非常に多くなる可能性があります 診断するのが面倒です 。参照アセンブリは、C:\ Program Files(x86)\ Reference Assembliesディレクトリから取得する必要があります。

インストールしようとしているAutofac nugetパッケージの.nuspecファイルを見ると、2つの異なるターゲットがサポートされています。 1つは、DNXCoreバージョン4.0.10-beta-22816用です。あなたがそれを使用していないことを願っています。そのプロジェクトは急速に変化しています。

もう1つは、.NET Portable、プロファイル259です。これにより、プロジェクトで.NET 4.5.x、St​​ore、Phone80、およびPhone81をターゲットにできます。鈍いエラーメッセージがあなたに告げているのは、そのプロファイルを見つけるのが難しいということです。 Windowsエクスプローラーを使用して見てください。プロファイルはC:\ Program Files(x86)\ Reference Assemblies\Microsoft\Framework.NETPortable\v4.5\Profile\Profile259ディレクトリに保存されています。必要なSystem.Runtime.dll参照アセンブリがあります。

まあ、確かにそれはうまくいきませんでした、私は根本的な理由を推測できません。

彼らは.nuspecファイルに微妙な間違いを犯しました。 Autofacのより安定したリリースを検討してください。ベータテスターに​​はなりたくないでしょう。また、4.5.2をターゲットにしないでください。それは意味がありません。興味深いことは何も追加されず、ユーザーに.NETインストールの更新を強制することはあまり合理的ではありません。

18
Hans Passant