C# 发布网站期间,在项目中未找到任何数据库

C# 发布网站期间,在项目中未找到任何数据库,c#,asp.net,asp.net-mvc,entity-framework,C#,Asp.net,Asp.net Mvc,Entity Framework,我试图在Visual Studio 2017社区中发布一个带有Entity Framework Core的MVC核心项目,但VS找不到任何包含DbContext的项目,因此它说:在项目中找不到数据库 DbContext不在网站项目(我想发布的)中,而是在网站项目引用的自己的dll项目中 我尝试在Windows 10上发布VS 2017社区版和预览版。以前在Windows8上,我可以使用预览版,而且效果很好。现在我在Windows10上 有关我的环境的Som信息: Visual Studio 2

我试图在Visual Studio 2017社区中发布一个带有Entity Framework Core的MVC核心项目,但VS找不到任何包含DbContext的项目,因此它说:在项目中找不到数据库

DbContext不在网站项目(我想发布的)中,而是在网站项目引用的自己的dll项目中

我尝试在Windows 10上发布VS 2017社区版和预览版。以前在Windows8上,我可以使用预览版,而且效果很好。现在我在Windows10上

有关我的环境的Som信息:

  • Visual Studio 2017社区(和预览版)
  • 具有ASP.NET核心和EF核心的.NET 4.6
  • 视窗10
以下是“发布”对话框:

解决方案是安装Visual Studio 2017 Professional,现在我可以查看我的DbContext类并在发布时应用迁移。

在我的例子中,问题是在appsettings.dev.json文件中定义了连接字符串,但在appsettings.json文件中没有定义


在我将连接字符串移动到appsettings.json文件后,在发布对话框中正确检测到数据库。

我认为您只需要在
appsettings.json
中为连接字符串设置一个键,因为发布工具可能会在
appsettings.json
中搜索任何连接字符串,然后,它将查找找到的连接字符串的
dbContect

如果你有这样的代码-

public void配置服务(IServiceCollection服务)
{
services.AddMvc();
var connection=Configuration.GetConnectionString(“MyConnectionString”);
services.AddDbContext(options=>options.UseSqlServer(connection));
}
你需要加上这个-

"ConnectionStrings": {
    "MyConnectionString": ""
}

发布工具将查找
MyConnectionString
,并将发现我们在
MyConnectionString

中注册了
DbContext
作为服务,这是为我做的,因此应该是正确的答案:3我的项目中没有
appsettings.dev.json
appsettings.json