文档提到 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 命令在部署项目,然后在该机器上的正确数据库上运行迁移。