Проблема Установка Entity Framework 7 RC1
Я пытаюсь установить EF7 rc1 в существующий проект:
PM > Install-Package EntityFramework.MicrosoftSqlServer -Pre
но я получаю следующую ошибку:
Ошибка установки. Откат назад... Пакет "Microsoft.Extensions.Logging 1.0.0-rc1-final" не существует в проекте "XYZ"
И в конце трассы я получаю это другое сообщение:
Install-Package: Не удалось добавить ссылку на "System.Collections.Concurrent". Убедитесь, что он находится в глобальном кэше сборок.
Я googled и вижу, что параллельная коллекция была в dotnet некоторое время, но у меня нет такой сборки в моей dev-блоке.
Update:
После запроса gac с gacutil
я понимаю, что действительно присутствует сборка:
Глобальный кэш сборок содержит следующие сборки:
System.Collections.Concurrent, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a, processorArchitecture = MSIL
Ответы
Ответ 1
После получения этой ошибки я смог установить EF7 RC1 в свой проект, удалив ссылки на мои другие проекты, после чего я смог успешно установить EF7 RC1 в проект, где мне это нужно, а затем добавил ссылки назад, после чего решение начинает компилироваться (и по крайней мере некоторые базовые функции EF начинают работать). Вероятно, сбой nuget/dnu.
Ответ 2
Поскольку у меня не было сборки System.Collections.Concurrent
в GAC, я установил System.Collections.Concurrent
пакет NuGet:
Install-Package System.Collections.Concurrent
Затем вручную добавлена ссылка на packages\System.Collections.Concurrent.4.0.10\lib\dotnet\System.Collections.Concurrent.dll
(поскольку папка net46 была пуста).
После этого установка EntityFramework.MicrosoftSqlServer
завершена без ошибок.
Ответ 3
В моем случае мне пришлось удалить пакеты xUnit nuget. После удаления этих ссылок Microsoft.Extensions.Logging 1.0.0-rc1-final устанавливается правильно. После этого я добавил xUnit обратно без каких-либо проблем.
Ответ 4
Если вы получаете это сейчас (как в апреле 2016 года), эти ответы могут быть устаревшими. Я устанавливаю EF7 в первый раз, но я нашел следующее:
- Я установил
EntityFramework.SqlServer
, сначала подумав, что это самый пакет "верхнего уровня", который мне нужен
- Я попытался установить
EntityFramework.Commands
и получил тупую "коллекцию", показанную выше.
Я внимательно посмотрел на версии.
- SqlServer все еще был бета-версией 8
- Команды были RC1
Итак, я пошел в "Управление пакетами nuget" для проекта и обновил все, что показано под обновлениями.
Я действительно должен был сделать это дважды.
Это привело к тому, что содержимое ядра EF7 до RC1
Затем я смог установить EntityFramework.Commands
без проблем.
НО это не то, что вы хотите сделать?
Почему?
Поскольку они переименовали пакет EntityFramework.SqlServer
в EntityFramework.MicrosoftSqlServer
Итак, вы действительно хотите удалить *.SqlServer
и установить *.MicrosoftSqlServer
Это объясняет, почему не было версии RC1.
Ответ 5
Это PITA, но с использованием .Net v4.5.2
мой способ обхода для EntityFramework.Core -pre
установлен:
- Создайте чистую библиотеку классов без установленных NuGets.
-
install-package entityframework.core -pre
- Скопировать содержимое
packages.config
, но не включать строку, представляющую EntityFramework.Core
- Включите строки в
packages.config
, которые вы устанавливаете.
-
update-package -reinstall -projectName YourProjectNameFromStep4
-
install-package entityframework.core -pre
ПРИМЕЧАНИЕ! Если шаг 5 не удается выполнить, выполните следующие действия:
-
install-package System.Collections.Concurrent -version 4.0.0 -projectName YourProjectNameFromStep4
-
install-package System.Runtime -version 4.0.0 -projectName YourProjectNameFromStep4
Затем их можно удалить после успешной установки с шага 6:
-
uninstall-package System.Collections.Concurrent -projectName YourProjectNameFromStep4
-
uninstall-package System.Runtime -projectName YourProjectNameFromStep4
После перезапуска Visual Studio он может сказать: "Не удается найти System.Collections.Concurrent
, но закрывать глаза для этого, похоже, работает.
Ответ 6
Такая же проблема. Я удалил ef7-beta8 и его зависимости и переустановил ef7... Проблема решена, поэтому кажется, что есть ошибка в логике обновления или в самом nuget, не знаю точно.
Ответ 7
В качестве обходного пути я создал новый проект, установил EF 7, добавил исходные файлы вручную и работал.