Команды EntityFramework в пакете библиотеки классов ASP.Net 5?

Я пытаюсь разработать свое первое веб-приложение ASP.Net, и в своем решении у меня есть два проекта. A Web Application и Class Library (Package). Когда я создаю версию ASP.Net 4.5 этого приложения, я помещаю свои объекты Entity Framework 6 в библиотеку классов, поэтому я делаю это в версии ASP.Net 5. Проблема в том, что когда я устанавливаю EntityFramework.Commands в библиотеку классов, я получаю ошибку:

Зависимость EntityFramework.Command 7.0.0-rc1-final в Project DBEntities не поддерживает структуру .NetPlatform, Version = 5.4

Мое понимание из this SO question заключается в том, что dotnet5.4 - это новая .Net 5, которая должна поддерживаться EF7.

Вот мой файл project.json:

{
  "version": "1.0.0-*",
  "description": "FFInfo.DAL Class Library",
  "authors": [ "Mathew" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",
    "frameworks": {
        "dotnet5.4": {
            "dependencies": {
                "Microsoft.CSharp": "4.0.1-beta-23516",
                "System.Collections": "4.0.11-beta-23516",
                "System.Linq": "4.0.1-beta-23516",
                "System.Runtime": "4.0.21-beta-23516",
                "System.Threading": "4.0.11-beta-23516"
            }
        }
    },
    "dependencies": {
        "EntityFramework.Commands": "7.0.0-rc1-final",
        "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"
    }
}

Я установил неверный пакет, изменился ли EF7 так, что я неправильно создаю класс, или мне что-то не хватает в моем json файле?

EDIT: Новый файл project.json основан на предложениях

{
    "version": "1.0.0-*",
    "description": "FFInfo.DAL Class Library",
    "authors": [ "Mathew" ],
    "tags": [ "" ],
    "projectUrl": "",
    "licenseUrl": "",
    "frameworks": {
        "dotnet5.4": {
            "dependencies": {
                "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-*",
                "Microsoft.Dnx.Runtime": "1.0.0-*",
                "Microsoft.Extensions.CommandLineUtils.Sources": {
                    "version": "1.0.0-*",
                    "type": "build"
                },
                "Microsoft.Extensions.PlatformAbstractions": "1.0.0-*",
                "System.Console": "4.0.0-*",
                "System.IO.FileSystem": "4.0.1-*"
            }
        },
        "netcore50": {
            "bin": {
                "assembly": "lib\\netcore50\\_._"
            }
        },
        "dependencies": {
            "EntityFramework.Commands": "7.0.0-rc1-final",
            "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"
        }
    }
}

Ответ 1

Я полагаю, что причина вашей проблемы носит чисто технический характер. Объявление объявляет переименование dnx451 в net451 и dnxcore50 на dotnet5.4, но рекомендуется использовать такое переименование только для библиотек классов (который вы публикуете на NuGet, например, чтобы поделиться с другими). Если я правильно вас понимаю, вы разрабатываете приложение, которое использует библиотеки классов, и поэтому вы должны использовать dnxcore50 вместо dotnet5.4. Таким образом, вам нужно просто переименовать строку "dotnet5.4" в строку "dnxcore50" in the file project.json`, чтобы исправить проблему.

Независимо от приведенной выше рекомендации, я хочу добавить свое понимание вашей проблемы, почему вы получили сообщение об ошибке EntityFramework.Command 7.0.0-rc1.

Я понимаю переименование фреймворков как шаг в направлении будущих изменений, которые планируют Microsoft. С другой стороны, все имена фреймворков будут интерпретироваться как разные имена. Я предлагаю вам сравнить информацию о зависимостях, отображаемых на странице https://www.nuget.org/packages/EntityFramework.Commands/7.0.0-rc1-final из соответствующей информации из https://www.nuget.org/packages/EntityFramework.MicrosoftSqlServer/7.0.0-rc1-final. Зависимости EntityFramework.MicrosoftSqlServer (которые не имеют проблем с использованием dotnet5.4) выглядят как на картинке

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

Я отметил прочитанную часть, ответственную за dotnet5.4. С другой стороны зависимости EntityFramework.Commands выглядят как на рисунке ниже:

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

где нет раздела ".NETPlatform 5.4", который соответствует новому имени dotnet5.4.

Я полагаю, что ошибка части project.json EntityFramework.Commands:

"netcore50": {
  "bin": {
    "assembly": "lib\\netcore50\\_._"
  }
}

Я полагаю, что в строках необходимо изменить netcore50 на dotnet5.4, чтобы правильно поддерживать новое имя фрейма dotnet5.4. Один из них может заменить содержимое "netcore50" на копию с dnxcore50 (см. строки):

"dotnet5.4": {
  "dependencies": {
    "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-*",
    "Microsoft.Dnx.Runtime": "1.0.0-*",
    "Microsoft.Extensions.CommandLineUtils.Sources": {
      "version": "1.0.0-*",
      "type": "build"
    },
    "Microsoft.Extensions.PlatformAbstractions": "1.0.0-*",
    "System.Console": "4.0.0-*",
    "System.IO.FileSystem": "4.0.1-*"
  }
}

Вероятно, нужно увеличить количество версий DLL, упомянутых выше, но вы по-прежнему не сможете использовать EntityFramework.Commands в разделе "dotnet5.4" до публикации новой фиксированной версии.

ОБНОВЛЕНО: Я поставил проблему в команду разработчиков EntityFramework. Я буду включать ответ от Microsoft по этому вопросу после того, как я его получу.