我的偏好是不将项目特定的配置文件签入源代码管理,而是将环境变量和其他配置方面的内容保存在一个公共文件夹中(在源代码管理中)。然后根据给定项目、解决方案、环境在给定时间可能需要什么,生成配置文件作为本地构建、构建自动化或部署脚本的一部分。这可以通过简单的文本文件、xml 模板或更复杂的东西(如 spark 视图引擎)来完成,具体取决于您的需要。如果模板比您需要的复杂(通常是这样),您也可以按照惯例执行此操作。这样,无论您在哪里部署代码,您都可以定义特定于环境的配置。
按照惯例,一个示例是在主配置文件(Web 配置、应用程序配置等)中定义自定义配置部分。然后,您可以存储一个连接字符串-development.config、一个连接字符串-integration.config、一个连接字符串-testing.config、一个连接字符串-pre-production.config 和一个连接字符串-生产。在您的主要来源(或公用文件夹)中配置。然后,构建过程将删除适当的连接字符串配置文件,将其重命名为简单的 connection-strings.config。
通过模板生成,您还将拥有具有相同环境特定配置文件的自定义配置部分,但您无需在部署时重命名,您只需使用适当的配置文件名直接重写基本配置文件的一部分。
但是,将配置文件按环境分块为您提供了很大的灵活性,尤其是当您开始管理许多使用相同或相似配置风格的站点时。无论如何,您的配置应该由您的自动化环境的某些方面决定!