web-dev-qa-db-ja.com

.NET Core1.0クラスライブラリからmscorlib4.0.0.0を参照する

.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モデルを作成しています。コンパイルしようとすると、これが発生します...

enter image description here

enter image description here

これを解決する方法はありますか?

10
Matthew Layton

ここでのプロジェクトファイルには2つの問題があります。1つは簡単に修正でき、もう1つは修正できません;)

  • あなたのプロジェクトしませんターゲットnet461netstandard1.6。 project.jsonのコメントは次のとおりです。netstandard1.6のターゲットを構築し、NuGetに嘘をつき、あなたがnet461であると主張します(嘘はimportが行うことです...私を信じないでください、見てくださいそれまで;))。また、project.jsonがNuGetに嘘をついているため、Microsoft.AspNet.Identity.EntityFrameworkを追加できます。 net461netstandard1.6を並行して追加しても、依存関係を追加できないため、役に立ちません。
  • NuGetの依存関係Microsoft.AspNet.Identity.EntityFrameworkは2015年にリリースされ、。NET Framework(mscorlibベース)に基づくであり、.NET Standard/.NET Core(System.Runtimeベース)には基づいていません。嘘は、依存関係がSystem.Runtimeではなくmscorlibに基づいているという事実については役に立ちません。

試すことができるのは、net461netstandard1.6を並行して(正しく)ターゲティングし、#ifdefsを使用してそれぞれMicrosoft.AspNet.Identity.EntityFrameworkMicrosoft.AspNetCore.Identity.EntityFrameworkCoreで並列実装を試みることです。ただし、結果がどれほど役立つか、結果のライブラリがどのように使用されるかはわかりません;)

9
Thomas

Microsoftには、役立つnugetパッケージがあります。それがどのように機能するかの詳細はわかりませんが、依存関係の問題は解決しました:

https://www.nuget.org/packages/Microsoft.NETCore.Portable.Compatibility/

または、パッケージマネージャーコンソールでこれを実行します。

Install-Package Microsoft.NETCore.Portable.Compatibility -Version 1.0.1

編集:これは.netコア1.1プロジェクトに追加されました。

10
sec0ndHand