9

プロジェクトをクロスプラットフォームにすることを試みています。 enter image description hereNET標準とネットコアアプリケーション:.NETコアプロジェクトを作成するとき(コンソールまたはクラスライブラリを使用)

しかし、Entity Frameworkを使用して私のDBをスキャフォールドするとき、コンソールアプリケーションで使用する場合を除いて、必要なナゲットパッケージはインストールされませんでした。ここで

は違いはコンソールアプリケーションは、.NETのコアを参照し、次のとおりです。 enter image description here

とクラスライブラリ参照NET標準:

enter image description here

だから彼らは、.NETのコアの下の両方である理由別のライブラリを参照していますか?両方ともCross Platformか.NET Coreを使用しているコンソールのみですか? この場合、クラスライブラリを使用しないでください。

+0

私はこれを見つけました: - NET標準ライブラリはPCLの次のバージョンです:そして、両方とも クロスプラットフォームです。 - NETコアは.NET Frameworkの代替プラットフォームです( はWindowsのみ)。しかし、これはまだこの質問への答えとして十分ではありません – Coding

答えて

5

"なぜ、それらは両方とも.NET Coreの下にありますが、別のライブラリを参照していますか?
ライブラリを作成するために推奨されるNETバージョンは、現在Net Standard Libraryです。そのため、クラスライブラリを作成するときのデフォルトは、Net Coreではなくネットの標準バージョンです。あなたは手動でそれを変更することができますが、推奨されていませんIntroducing .NET Standard Libraryについてのこのブログの投稿を参照してください。

どちらもクロスプラットフォームか、.NETコアを使用しているコンソールのみですか?
はい、どちらもクロスプラットフォームです。

この場合、クラスライブラリを使用しないでください。
いいえ、必ずクラスライブラリを使用してください。これは当初のマイクロソフトの意図ではありませんでしたが、後で心が変わるので、すべてのパッケージが.net標準と互換性があるわけではありません。なぜなら、「Microsoft」のためにネット標準版を使用して足場プロジェクトを使用することはできません。 EntityFrameworkCore.Tools "は現時点ではNetコアとのみ互換性がありますが、すぐにDotNet Standardと互換性があります。

実際にスカホールドオプションを使用したい場合は、クラスライブラリプロジェクトを使用できますproject.jsonの.netバージョンで手動で変更すると、一度互換性があります.net標準に戻ることができます。どのように区切りを保持したいかに応じて、サービスやデータレイヤーなどの他のプロジェクトは、dotnet標準のクラスライブラリにすることができ、正しく動作するようになります。

または、元のソリューションからコンソールアプリケーション(.netコア)を入手し、.net標準を使用して実際のクラスライブラリにコピー&ペーストすることができます。 (これは私たちが現在プロジェクトでやっていることです)

+0

本当に頭痛になるでしょう... – Coding

関連する問題