【发布时间】:2017-02-19 15:31:54
【问题描述】:
我的项目中有多个环境 - 一个开发环境、3 个测试环境、1 个集成环境和最终生产环境。
因此,我们决定使用特定于环境的 appsettings.ENVNAME.json
正如this answer 中提到的,我们关注的是project.json-
"publishOptions": {
"include": [
...
"appsettings.json",
"appsettings.*.json",
...
]
}
通过这样做,我们将 appsetting.PROD.json 发布到甚至在不同的 TEST 环境中,这是错误的。
我明白,我们可以像这样在启动时控制 appsettings 文件的加载-
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
但在这种情况下,其他文件也可用。 (有人错误地更改了环境名称,它会开始获取其他环境的详细信息)
现在(根据我们的审计团队),我们需要将特定于环境的 appsettings.ENVNAME.json 发布到相应的环境。
如何使用 project.json 来实现这一点?我们需要为此编写单独的脚本吗?解决这种情况的最佳方法是什么?
【问题讨论】:
-
某人错误地更改了 env 名称,它将开始获取其他环境的详细信息与 某人错误地发布了错误的 appsettings.envname 一样好。 json 文件,它将开始获取其他环境的详细信息,两者都容易出现相同类型的手动错误。您可以在示例中使您的环境文件成为强制性而不是可选的。如果有人将其更改为不存在的环境名称,则会出现错误。问题是,不是你的包应该决定哪个是环境模式,而是你的服务器部署它
-
即使我强制要求,其他环境文件仍将成为我的发布文件夹的一部分。审计小组不会批准这个。在这里,我们的目的是根据环境名称自动化发布过程。
-
您谈到如此严格的审核流程,但开发人员可以直接发布到登台和生产?为什么不将其发布到单独的位置,然后将所需的文件复制到所需的位置?
标签: visual-studio-2015 asp.net-core asp.net-core-mvc asp.net-core-1.0