ポータブルクラスライブラリをターゲットとしたEFコアのインストールを試行する.Net 4.6.1

entity-framework entity-framework-core portable-class-library

質問

これは、EF Core、ASP Net Core、およびVS2015搭載のポータブルクラスライブラリを試して初めてのことです。私は不満を感じています。

EntityFramework.Coreをインストールできるライブラリを作成したいと思います。このライブラリは、WPFアプリケーションとASP NETコアWebアプリケーションで使用する必要があります。ここでは、適切な階層化されたアプリケーションの概念は無視してください。私の考えは、ポータブルクラスライブラリを作成することでした。

私は.NET 4.6とASP Net Coreをターゲットとするプロジェクトテンプレートを使用しています...

ターゲット

クラスとproject.jsonファイルを含むプロジェクトを次のように取得します。

{
    "supports": {
        "net46.app": {},
        "dnxcore50.app": {}
    },
    "dependencies": {
        "Microsoft.NETCore": "5.0.0",
        "Microsoft.NETCore.Portable.Compatibility": "1.0.0"
    },
    "frameworks": {
        "dotnet": {
            "imports": "portable-net452"
        }
    }
}

今度は、nugetからEntityFramework.Coreパッケージをインストールします...

EF Core Nugetのインストール

...私は次の結果を得ます:

Restoring packages for 'Acme.PCLEFClassLib'.
Restoring packages for K:\TFS\TestApps\Projects\DotNetCore\Acme.PCL1\Acme.PCL1\project.json...
Detected package downgrade: System.Reflection from 4.1.0-beta-23225 to 4.0.10 
 Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> Microsoft.Extensions.DependencyInjection.Abstractions (>= 1.0.0-rc1-final) -> System.Reflection (>= 4.1.0-beta-23225) 
 Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> System.Reflection (>= 4.0.10)
Detected package downgrade: System.Reflection from 4.1.0-beta-23225 to 4.0.10 
 Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> Microsoft.Extensions.Logging.Abstractions (>= 1.0.0-rc1-final) -> System.Reflection (>= 4.1.0-beta-23225) 
 Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> System.Reflection (>= 4.0.10)
Version conflict detected for System.Collections. 
 Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> System.Collections (>= 4.0.11-beta-23516) 
 Acme.PCLEFClassLib (>= 1.0.0) -> Microsoft.NETCore.Portable.Compatibility (>= 1.0.0) -> Microsoft.NETCore.Runtime (>= 1.0.0) -> Microsoft.NETCore.Runtime.CoreCLR-x86 (>= 1.0.0) -> System.Collections (= 4.0.10).
EntityFramework.Core 7.0.0-rc1-final is not compatible with .NETPlatform,Version=v5.0.
Some packages are not compatible with .NETPlatform,Version=v5.0.
Ix-Async 1.2.5 is not compatible with DNXCore,Version=v5.0.
Remotion.Linq 2.0.1 is not compatible with DNXCore,Version=v5.0.
Some packages are not compatible with DNXCore,Version=v5.0.
Ix-Async 1.2.5 is not compatible with DNXCore,Version=v5.0 (win7-x86).
Remotion.Linq 2.0.1 is not compatible with DNXCore,Version=v5.0 (win7-x86).
Some packages are not compatible with DNXCore,Version=v5.0 (win7-x86).
Ix-Async 1.2.5 is not compatible with DNXCore,Version=v5.0 (win7-x64).
Remotion.Linq 2.0.1 is not compatible with DNXCore,Version=v5.0 (win7-x64).
Some packages are not compatible with DNXCore,Version=v5.0 (win7-x64).
Package restore failed for 'Acme.PCLEFClassLib'.
Package restore failed. Rolling back package changes for 'Acme.PCLEFClassLib'.
========== Finished ==========

ポータブルクラスライブラリにEFコアをインストールすることは実際可能ですか?もしそうなら、私はこのプロジェクトで何をする必要がありますか?

私はちょうどライン上の解決策を探しているサークルで回っていると感じています。

更新1

私のPCLにEntityFramework.MicrosoftSqlServerをインストールしようとしました。

dnxcore50フレームワークを使用する標準ASP Netコアプロジェクトを作成するときに、EntityFramework.MicrosoftSqlServerがインストールされていることを前提とします。どうすれば私はPCLで似たようなことをするのだろうか?

EntityFramework.MicrosoftSqlServer 7.0.0-rc1-final is not compatible with .NETPlatform,Version=v5.0.

その場合、ASP NETコアプロジェクトにどのようにインストールされますか。

更新2

.NET 4.5.1を対象とした新しいPCLを作成しました。その後、Nuget経由でEntityFramework.MicrosoftSqlServer 7.0.0-rc1-finalをインストールしました。問題はインストールされません。私は今これを繰り返すことはできませんが。私は、ASP NETコアと.NET 4.5.1を対象としたPCLライブラリプロジェクトとは別のソリューションを作成しました。これにより、次のように出力されます。

Attempting to gather dependency information for package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final' with respect to project 'AnotherPCLEFFUP', targeting '.NETPortable,Version=v4.5,Profile=Profile75'
Attempting to resolve dependencies for package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final' with DependencyBehavior 'Lowest'
Resolving actions to install package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final'
Resolved actions to install package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final'
Install failed. Rolling back...
Package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final' does not exist in project 'AnotherPCLEFFUP'
Package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final' does not exist in folder 'K:\TFS\TestApps\Projects\DotNetCore\AnotherPCLEFFUP\packages'
Invalid portable frameworks.

EntityFramework.Core.7.0.0-rc1-finalのインストールも同様です。

言うまでもなく、これは完全にイライラしています。たぶん私は間違った木を吠えるか、今日は怒っているだけです。

人気のある回答

私はこれがあなたのポータブルクラスのニーズにどのように機能するのかわかりませんが、通常の.NET(4.6など)では、以下を発見しました。 (下記のラントを参照)

だから私はこれが「コーシャー」かどうかは分かりませんが、このソースは今働いています:

nugetパッケージソースを追加する(Options - Package Sources - Add(plus)

SqlServer用にインストールする場合は、次のようにインストールしてください:

Microsoft.EntityFrameworkCore.SqlServer

または、他のすべての必要なものを拾う別のトップレベルの依存関係を選択します。

* [begin-rant]これは、EF githubディスカッションを席巻したばかりであった。彼らは今何をすべきかを説明する実用的な説明がないということは全く言い難い。彼らは、彼らが現在取り組んでいるものとは根本的に異なる設計をした、そして5ヶ月以上更新されていない "RC" 1バージョンを、そのバグのすべてと一緒に引き出すべきです(これは 'pre 「リリース」マークがチェックされました!)、完全にナゲットから。

私は追加してみましょう:私はこれらの男がやっているすべてを愛し、私は新しいビット、本当に良いものがたくさんのが大好きです。しかし、我々は、それはすでに、彼らは公表していない根本的に再設計されたRC2版で修正されたバグの完全であるとき、おそらく、 まだ 「RC」のリリースとしてマークされて半年間ぶら下がったままにしないでください。 [/ end-rant] *



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow