【发布时间】:2018-01-12 12:02:52
【问题描述】:
我正在为我们团队的第一个 .NET Core 应用程序生成自动构建过程。我们的过程是在我们的构建服务器上生成一个工件包(包含所有不同类型的应用程序、数据库迁移脚本等),然后在一个单独的步骤中将该包部署到我们拥有的各种环境(开发、测试、演示、培训、直播等)
在完整的 .NET Framework 应用程序中,我们使用 Slow Cheetah 对 Windows 服务和控制台应用程序等执行配置转换,以便当应用程序安装在目标系统上时,它具有正确的配置。
现在使用 .NET Core 2.0 应用程序,我发现了两个问题:
发布操作(据我所知,这是为单个应用获取某种人工制品包的首选方式)不包含任何 appsettings 文件(ASP.NET Core 应用除外)。
如果我自己编写了 appsettings 副本的脚本,部署的版本如何知道要使用哪个 appsettings..json?
事实上,除了该环境的确切设置外,我宁愿不部署任何东西。在我看来,为所有环境部署设置(或为目标环境设置的确切配置之外的任何设置)都是等待发生的意外。 (编辑:要强调的是,我宁愿不在运行时合并不同的配置源,因为如果事情不能正常工作,试图弄清楚实际应用了哪个配置元素,那将是一团糟。) 那么,我如何将环境特定项与主 appsettings.json 文件“合并”?
【问题讨论】:
-
appsettings.json只是一个没有特殊意义的文件。如果要在发布时包含它,则必须将其作为内容包含或复制到输出中。 .NET Core 的配置可以从多个提供程序读取配置数据,无需任何默认值或特殊处理。 -
@PeterB 不幸的是,这两个文档都引用了 ASP.NET 核心,而不是控制台应用程序或 Windows 服务,因此并不真正适用。 (顺便说一句,他们也无法帮助部署到 10 之前或 Azure 之外的 IIS 版本 - 但这是我试图解决的另一大难题。)
标签: c# .net .net-core console-application