未找到 EF Core 工具 System.Configuration.ConfigurationManager 程序集
EF Core tools System.Configuration.ConfigurationManager assembly not found
我正在创建一个使用 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;");
}
}
我可以生成迁移并将它们 apply/revert 到数据库。
现在,如果我用对配置文件的调用替换硬编码的连接字符串
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 在那里,我可以在 ContextFactory(不是设计时)中访问 ConfigurationManager,在启动应用程序本身时没有问题。看起来 EF 核心工具没有在寻找模型程序集的依赖项...
有什么我想念的吗?也许无法在 DesignTime 上下文工厂中使用 ConfigurationManager?
最后问题出在了应用项目上。我必须将 System.Configuration.ConfigurationManager 的 nuget 包添加到 .Net Framework 应用程序,以便 PackatManager 可以找到它。有点奇怪,它在运行时有效,但在 "design mode".
中无效
我正在创建一个使用 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;");
}
}
我可以生成迁移并将它们 apply/revert 到数据库。 现在,如果我用对配置文件的调用替换硬编码的连接字符串
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 在那里,我可以在 ContextFactory(不是设计时)中访问 ConfigurationManager,在启动应用程序本身时没有问题。看起来 EF 核心工具没有在寻找模型程序集的依赖项...
有什么我想念的吗?也许无法在 DesignTime 上下文工厂中使用 ConfigurationManager?
最后问题出在了应用项目上。我必须将 System.Configuration.ConfigurationManager 的 nuget 包添加到 .Net Framework 应用程序,以便 PackatManager 可以找到它。有点奇怪,它在运行时有效,但在 "design mode".
中无效