2017-10-22 27 views
3

.NET Framework、.NET Core、および.NET Standardの違いを念頭に置いています。私が読んできたことから、.NET Standardは一種の類義語であり、.NET Standardを使って書かれたライブラリは他のフレームワークを使って書かれたコードと互換性があるべきです。.NET Framework 4.6.1アプリケーションで.NET Standard 1.4クラスライブラリを参照する際にエラーが発生しました

しかし、私は.NET Standard 1.4を使用するクラスライブラリと.NET Framework 4.6.1を使用するアプリケーションを作成しました。アプリケーションはではなく、でそのライブラリを使用できます。

アプリケーションがクラスライブラリのクラスを使用しようとするたびに、次のようなエラーが発生します。

エラーCS0012タイプ 'IEnumerator <'は、参照されていないアセンブリで定義されています。アセンブリ 'System.Runtime、Version = 4.0.20.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a'への参照を追加する必要があります。

エラーCS0012 'オブジェクト'タイプは、参照されていないアセンブリで定義されています。アセンブリ 'System.Runtime、Version = 4.0.20.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a'への参照を追加する必要があります。 「HtmlMonkey.HtmlNodeCollectionは」「GetEnumeratorメソッド」

の公開定義が含まれていないため、CS1579のforeach文は、型の変数「HtmlMonkey.HtmlNodeCollection」を操作することはできません

エラーは、誰かが私がの私の理解を締めくくり助けることができますこれらのライブラリは、私のアプリケーションが私のクラスライブラリを使用できるようにするものですか?

+0

VS 2017の最新バージョンを使用していますか? (現在15.4.1) –

+0

@MartinUllrich:はい、私は現在、リリースされたバージョンを使用していますが、実際にはシステムに新しいVS 2017プレビューがインストールされています。 –

+3

'NETStandard.Library'ナゲットパッケージをホスティングアプリケーションにもインストールしましたか?代わりにpackages.config(最初のインストールに影響を与えるNuGetオプション)の代わりに 'PackageReference'を使うことになります。このようにして、参照は一時的に流れます。 –

答えて

3

これは、netstandard 1.4以下と.NET 4.6.1 - 4.7プロジェクトとの互換性に関する既知の問題です。

NETStandard.Library 2.0.0パッケージnet461-net47でnetstandard1.xパッケージをインストールしていない。なお、以下では、問題と作業の回避策の問題#503 Referencing NETStandard.Library 2.0.0 in net461-net47 project and only using ns1.4 (or lower) libs doesn't work

説明として.NET Standard GitHub repoに追跡されプロジェクト。これは、サポートパッケージが常にnet461以降に存在すると期待していたからです。しかし、そのサポートが実装されたときには、netstandard1.5以降のライブラリが参照されたときにのみオンにするようにダイヤルしました。

netstandard1.0-1.4ライブラリをnet461-47プロジェクトにインストールし、NETStandard.Library 2.0.0パッケージを参照すると、依存関係が失われます。

回避策の1つは、.NETStandard.Library 1.6.1パッケージを代わりに使用することです。これは、ファサードを持ち込む個々のライブラリパッケージに依然として依存しています。

代替回避策は、プロジェクトファイルでImplicitlyExpandNETStandardFacades = trueを設定することです。これにより、ns2.0アセンブリのファサードがすべて有効になります。

0

元のプロジェクトを作成するために使用された正確なシーケンスが覚えていません。コメントで述べたように、Visual Studio 2017と新しいVisual Studio 2017プレビューの両方を自分のマシンにインストールしました。自分のソリューションで各プロジェクトを作成するために異なるバージョンを使用することも可能です。

どちらの方法でも、Visual Studio 2017プレビューを使用して、.NET標準を使用したクラスライブラリと.NET Frameworkを使用するWinFormsアプリケーションでソリューションを再作成しました。そして、うまく動いているようです。 (私はNuGetを使って手動で何かをインストールする必要はありませんでした)

非常に明確な解決策ではありません。もともと私は、それが私が参照していたフレームワークに関連するより具体的な問題であると想定していました。しかし、誰かが同じエラーメッセージで同様の状況に陥った場合に備えて、おそらく私はその質問を残しておきます。

関連する問題