2017-10-20 25 views
11

最初に4.6.1を対象とするWebアプリケーションがあります。このWebアプリケーションはクラスライブラリを参照しています。これはNet Standard 1.6クラスライブラリを参照します。Net 4.6.1/4.7からNet Standardを参照する際のエラー

ネットスタンダードライブラリへの参照を追加すると、最新の変更が加えられ、これが破損しているように見えます。ネットスタンダードライブラリが導入されるまで、ウェブアプリケーションは正常に動作していました。その時点で、私はエラーを取得開始しました:

Could not load file or assembly 'System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

System.Runtimeは、WebアプリでNuGetパッケージとして含まれています。

これは関係ないかもしれませんが、packagesディレクトリを見ると、 System.Runtime.4.3.0 \ libにはnet45net462というディレクトリがありますが、4.6.1または4.7ではありません(下記の理由を参照してください)。働いていない私が試した

いくつかの点:

  • hereその4.6.1サポートネットSTD 1.6を見てもかかわらず、私は4.7に アップグレードを試しましたが、無駄に。
  • web.configでアセンブリのリダイレクトを設定しようとしました。これは、4.0.0.0を探してからリダイレクトが始まるというだけのエラーに変わりますが、基本的には同じエラーです。
  • パッケージディレクトリを削除して、強制的にリフレッシュできるかどうかを試しました(System.RuntimeでもUpdate-Packageを試しました)。
  • ウェブ検索では、同様の問題がいくつか見つかりました。 1つはGitHub(私が再配置することはできないようです)では、VS2017のアップデートによって問題が解決されるということです。

ウェブ上には私がこれを体験する唯一の人ではないと思うほどの最新のものがあります。私は原因が何であるかについて何の説明も見つけていない。誰かがこれを引き起こしている可能性のあるものや、私が使用できる診断ステップについて説明することはできますか?

+0

どのバージョンのVisual Studioを使用していますか? –

+0

Visual Studio 2017(15.4.1) –

+0

おそらく、これを再現してどこかに公開するために最小限のプロジェクトを作成できますか? – Evk

答えて

2

.NET Frameworkの場合、.NET標準のドキュメントherehereには競合する情報があります。私は後者が最新のものだと思う。

基本的には、.NET Core 2.0 SDKがインストールされていない限り、.NET Framework 1.6では.NET Frameworkがサポートされていません。

また、.NET Standard 1.5以降は、.NET Core 1.0 SDKがインストールされている場合にサポートされています。

+0

Net Core 2.0 SDKに対して実行していましたが、これが原因ではありません。 –

0

NuGetは、プロジェクトのターゲットフレームワークであるまたはに最新のフレームワークバージョンをインストールすることを指摘しておきます。つまり、4.6.1をターゲットにしているとき、参照されるバージョンはnet45または4.5になり、ネットスタンダード1.1にまで下がります。

4.7へのアップグレードは、net462を参照することを意味するはずですが、すべてが正しく機能しているわけではありません。 4.6.2に更新しようとしましたか?

0

私が記述した長い変換プロセスの後に、here 私は経験があります:NuGetパッケージNETStandard.Libraryもメインプロジェクト(webapp .net 4.6.1)にインストールする必要があります。それはたくさんのパッケージをインストールします。

NETStandard.Libraryバージョン1.6.1を使用します。

netstandardコードでSystem.Runtime.Serializationを使用する場合、System.Runtime.Serialization.PrimitivesとSystem.Runtime.Serialization.Xmlまたは.Jsonもメインプロジェクトにインストールする必要があります。

また、netstandardプロジェクトの他のすべての参照は、メインプロジェクトでも参照する必要があります。

3

私も同様の問題があり、プロジェクトからSystem.Runtime参照を削除し、Nuget(Net Standard互換)経由でインストールすることで解決しました。それは問題を抱えていた唯一のパッケージではありませんでした(他の例、System.Net.Http)。また、ソリューションに複数のプロジェクトがある場合、それらのすべてにNet Standardをインストールする必要があります。

関連する問題