Ссылка на mscorlib 4.0.0.0 из библиотеки классов .NET Core 1.0

У меня есть библиотека классов .NET Core 1.0, которая нацелена на .NET 4.6.1 и ссылается на .NET Standard Library 1.6.0 и Identity Framework 2.2.1

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 (User, Role и т.д.). Когда я пытаюсь скомпилировать, это происходит...

введите описание изображения здесь

введите описание изображения здесь

Любые идеи, как решить эту проблему?

Ответ 1

Здесь есть две проблемы с файлом проекта: одна простая для исправления, невозможно исправить;)

  • В проекте нет target net461 и netstandard1.6. Что говорит ваш project.json: Создайте цель для netstandard1.6 и лежите в NuGet и утверждаете, что вы net461 (это ложь - это то, что import делает... не верьте мне, посмотрите его;)). А поскольку ваш project.json лгал NuGet, вы можете добавить Microsoft.AspNet.Identity.EntityFramework. Добавление параллельно net461 и netstandard1.6 не поможет вам либо из-за того, что вы не можете добавить зависимость затем.
  • Зависимость NuGet Microsoft.AspNet.Identity.EntityFramework выпущена в 2015 году и на основе .NET Framework (основанная на mscorlib), а не на .NET Standard/.NET Core (на основе System.Runtime). Ложь не помогает в том, что зависимость основана на mscorlib, а не System.Runtime.

То, что вы могли попробовать, - это (правильно) нацеливать (правильно) параллельно net461 и netstandard1.6 и пытаться выполнить параллельную реализацию с помощью Microsoft.AspNet.Identity.EntityFramework и Microsoft.AspNetCore.Identity.EntityFrameworkCore, используя #ifdefs. Однако насколько полезен результат, я понятия не имею, для чего будет использоваться результирующая библиотека;)

Ответ 2

У Microsoft есть пакет nuget, который может помочь. Я не знаю специфики того, как он работает, но он разрешил мои проблемы с зависимостями:

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

Или просто запустите это в консоли диспетчера пакетов:

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

изменить: Это было добавлено в проект .net core 1.1.