【问题标题】:How can I share a single config file across multiple locations in multiple environments?如何在多个环境中的多个位置共享单个配置文件?
【发布时间】:2019-01-27 03:43:16
【问题描述】:

我们有 5 个不同的开发团队,每个团队都有自己的开发环境(服务器、构建、数据库)每个开发环境都复制了我们的测试/预生产/生产环境。有许多项目(>100 个,包括所有 Web 应用程序、Web 服务、Windows 服务等)。

我们为每个环境中的连接字符串维护一个配置文件。我们所有的 web.config 和 exe.config 文件都通过 configsrc 引用这个文件。这对于 test/pre-prod/prod 来说很简单,因为开发人员无法访问这些。但是对于他们所做的开发环境。所有开发环境连接字符串都是相同的,只是它们指向不同的服务器。

我想转移到一个变量库并在构建/发布期间使用令牌替换,以便我可以将所有这些合并到一个单独的文件中,而不必在每个环境中维护。

我无法解决的一个问题是如何处理指向开发数据库的开发人员机器上的本地构建。在发布期间,转换和标记化在 TFS 上效果很好,而不是在本地构建上。 Slow Cheetah 想要发布,而 Fast Koala 不适用于后来的 .Net 框架。让开发人员在添加新的连接字符串时更新另一个团队的连接字符串几乎是不可能的。

【问题讨论】:

    标签: .net visual-studio tfs web-config app-config


    【解决方案1】:

    几个选项:

    1. 结合这两种方法。基线配置文件是本地的。然后有一个构建配置(“发布”、“部署”等)将配置文件转换为标记化版本。然后,部署过程可以使用正在部署的环境的正确值进行标准令牌替换。

    2. 使用带有 parameters.xml/setparameters.xml 的 WebDeploy 包,它允许您指定部署时配置转换。

    【讨论】:

    • 我想我错过了一个重要的点......我们的本地主机环境指向与该团队的开发服务器相同的开发数据库。因此,如果一个开发团队创建了一个新的连接字符串,我需要将其放入源代码控制文件中,这样当他们合并时,其他团队将在他们合并到他们的团队分支时获得该字符串。但是,如果它在连接字符串中出现另一个名为的团队数据库,那么我们最终会导致团队总是互相破坏配置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多