Сборка System.Configuration.ConfigurationManager tools EF Core не найдена

Я создаю новое приложение, использующее EF Core 2 с миграциями. Само приложение - это .NET Framework, но модель находится в отдельной сборке .net core 2.0. Все работает нормально, я определил фабрику контекста времени разработки:

public class MyDesignTimeContextFactory : IDesignTimeDbContextFactory<MyContext>
{
    public MyContext CreateDbContext(string[] args)
    {
        return new MyContext("Server=localhost\\SQLEXPRESS;Database=DBName;User ID=Test;Password=0000;");
    }
}

И я могу генерировать миграции и применять / возвращать их в БД. Теперь, если я заменю жестко закодированную строку подключения вызовом файла конфигурации

return new MyContext(System.Configuration.ConfigurationManager.AppSettings.Get("ConnectionString");

У меня ошибка при вызове инструментов EF Core:

Add-Migration -Project MyProject.Model -Name Initialization
System.IO.FileNotFoundException: Could not load file or assembly 'System.Configuration.ConfigurationManager, Version=4.0.1.0 ....,

Однако nuget есть, и я могу получить доступ к ConfigurationManager в ContextFactory (а не в среде разработки) без проблем при запуске самого приложения. Похоже, основные инструменты EF не ищут зависимости сборки модели ...

Что-то мне не хватает? Может быть, нельзя использовать ConfigurationManager в фабрике контекста DesignTime?


person Dmitry    schedule 06.11.2018    source источник
comment
В консоли пакета выберите MyProject.Model из раскрывающегося списка выше:   -  person Obay Abd-Algader    schedule 06.11.2018
comment
На самом деле это помогает, избегая указания параметра -Project, однако менеджер конфигурации все еще не может быть найден.   -  person Dmitry    schedule 06.11.2018


Ответы (1)


Наконец проблема была в проекте приложения. Мне пришлось добавить пакет nuget для System.Configuration.ConfigurationManager в приложение .Net Framework, чтобы PackatManager мог его найти. Немного утомило то, что он работает во время выполнения, но не в «режиме разработки».

person Dmitry    schedule 08.11.2018