2

文档提到 2.0 中不支持传入自定义环境变量,但 EF 核心 1.0 支持 --environment 参数。我有点觉得 EF Core 2.0 应该仍然支持这个特性。

目前,我正在将多个应用程序部署到同一台机器上,但同一台机器上的版本不同。我正在使用 Puppet 来自动化一些部署过程,并最终在 IIS 中创建网站,例如Company.Project.[env]. .dev、.test、.uat 之类的东西在哪里env运行,每个都在单独的 AppPool 等下运行。现在,使用 ASP.NET Core 2.0,我可以environmentVariable为每个部署的 aspnet 核心网站和环境变量应用一个 < > 到 web.configweb.config优先于ASPNETCORE_ENVIRONMENT. 在 puppet 部署期间,它会在 web.config 中为 ASPNETCORE_ENVIRONMENT 变量插入正确的值,这对我来说非常有意义,并且允许每个部署的应用程序仍然可以正确引导并加载到正确的appsettings.[environment].json文件中。

现在,使用 EF Core 2.0,我无法做到这一点。我计划为每个环境部署一个单独的数据库项目,并为每个部署的包添加环境名称后缀,就像我在网站上所做的那样,并计划以某种方式传入 --environment 以运行任何dotnet ef命令并让它们读取正确的appsettings.[environment].json文件将具有正确的目标数据库环境连接字符串来运行迁移。

如果 ASPNET Core 网站支持 < environmentVariable> ,则web.config允许将多个项目部署到使用唯一环境变量的同一台机器上。然后我觉得EF Core应该支持传入--environment。

由于这不再受支持,那么在同一台机器上多次部署应用程序但同时运行dotnet ef命令以针对特定 appsettings.[environment].json 以确保 ef 命令在部署项目,然后在该机器上的正确数据库上运行迁移。

4

2 回答 2

2

EF Core 将支持将自定义参数传递给 ef 工具命令的方式。我发现有一个问题正在跟踪此功能。

https://github.com/aspnet/EntityFrameworkCore/issues/8332

完成此操作后,可以将连接字符串或任何其他环境参数与 ef 命令一起传递。

于 2017-10-11T16:32:00.637 回答
1

遵循@Konrad 的建议:

在您的项目路径类型上运行的终端上

export ASPNETCORE_ENVIRONMENT=Production <- 或者你的环境

之后,您运行的任何命令都将使用您环境的 appsettings.json (appsettings.Production.json)

我目前正在使用 asp net core 2.2

于 2020-03-31T20:28:26.920 回答