.NET4.6.1をターゲットとし.NETStandard Library1.6.0とIdentityFramework2.2.1を参照する.NETCore1.0クラスライブラリがあります。
project.json
{
"version": "1.0.0-*",
"dependencies": {
"Microsoft.AspNet.Identity.EntityFramework": "2.2.1",
"System.Runtime": "4.1.0",
"NETStandard.Library": "1.6.0"
},
"frameworks": {
"netstandard1.6": {
"imports": [
"net461"
]
}
}
}
私のプロジェクトでは、基本のIdentity Frameworkモデル(ユーザー、ロールなど)を拡張するIDモデルを作成しています。コンパイルしようとすると、これが発生します...
これを解決する方法はありますか?
ここでのプロジェクトファイルには2つの問題があります。1つは簡単に修正でき、もう1つは修正できません;)
net461
とnetstandard1.6
。 project.jsonのコメントは次のとおりです。netstandard1.6
のターゲットを構築し、NuGetに嘘をつき、あなたがnet461
であると主張します(嘘はimport
が行うことです...私を信じないでください、見てくださいそれまで;))。また、project.jsonがNuGetに嘘をついているため、Microsoft.AspNet.Identity.EntityFramework
を追加できます。 net461
とnetstandard1.6
を並行して追加しても、依存関係を追加できないため、役に立ちません。Microsoft.AspNet.Identity.EntityFramework
は2015年にリリースされ、。NET Framework(mscorlibベース)に基づくであり、.NET Standard/.NET Core(System.Runtimeベース)には基づいていません。嘘は、依存関係がSystem.Runtime
ではなくmscorlib
に基づいているという事実については役に立ちません。試すことができるのは、net461
とnetstandard1.6
を並行して(正しく)ターゲティングし、#ifdefsを使用してそれぞれMicrosoft.AspNet.Identity.EntityFramework
とMicrosoft.AspNetCore.Identity.EntityFrameworkCore
で並列実装を試みることです。ただし、結果がどれほど役立つか、結果のライブラリがどのように使用されるかはわかりません;)
Microsoftには、役立つnugetパッケージがあります。それがどのように機能するかの詳細はわかりませんが、依存関係の問題は解決しました:
https://www.nuget.org/packages/Microsoft.NETCore.Portable.Compatibility/
または、パッケージマネージャーコンソールでこれを実行します。
Install-Package Microsoft.NETCore.Portable.Compatibility -Version 1.0.1
編集:これは.netコア1.1プロジェクトに追加されました。