Основные инструменты EF Сборка System.Configuration.ConfigurationManager не найдена - PullRequest
0 голосов
/ 06 ноября 2018

Я создаю новое приложение, которое использует 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 ....,

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

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

1 Ответ

0 голосов
/ 08 ноября 2018

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

...