【问题标题】:Foolproof Debug Vs Release万无一失的调试与发布
【发布时间】:2016-01-25 22:37:29
【问题描述】:

我担心自己和团队的其他成员在调试应用程序时会忘记将 VS 中的解决方案配置下拉菜单从发布切换到调试。

我们在代码库中散布了#If DEBUG 检查,以防止发生电子邮件、数据库数据更改和文件系统更改(使用 DI 慢慢重构)。

我一直在考虑使用 MSBuild 或 TFS 创建一个配置文件,其中包含一些指示发布版本的设置。这个配置文件不会被签入。我在这里看到的问题是,如果我们部署我们的应用程序并且无论出于何种原因缺少配置文件,应用程序将默默地写入我们的开发依赖项。

我们还希望能够选择在暂存环境中运行。

有没有更好的方法来处理这个问题,这样开发人员就不会像 F5 一样离开写到生产环境,或者我们不会将调试代码部署到生产环境?

【问题讨论】:

    标签: .net tfs msbuild release


    【解决方案1】:

    有没有更好的方法来处理这个问题,这样开发人员就不会像 F5 一样将代码写入生产环境,或者我们不会将调试代码部署到生产环境

    • 永远不要让开发人员物理访问生产环境。他们的 .config 文件中不应包含生产凭据(连接字符串等),并且在任何情况下都不应拥有对生产的物理访问权限。
    • 使用构建服务器为 QA 和生产创建构建。我们使用TeamCity,但有几个不错的选择。

    【讨论】:

    • 我绝对同意第一部分。我是公司的新手,这是一个小团队。我正在尝试进行这种转变,但它会很慢。那么构建服务器会写配置文件来配置所有依赖?
    • 是的。我们使用 SlowCheetah 来根据构建转换配置,并使用 TeamCity 创建适合 QA 或生产的构建。我们也是一个小团队,并且发现为正确设置而进行的投资是值得的。
    • 每个环境/配置有一个构建是浪费和不好的做法。好的做法是一组二进制文件,配置文件在发布时从模板生成。
    【解决方案2】:

    我可以肯定地说,你需要摆脱你的做法,这将是灾难性的。依靠开发人员进行这种转换永远不会长期有效。

    有很多方法可以解决这个问题,我们遵循的方法是:

    • 为每个环境创建单独的配置文件 (DEV/IT/QA/PROD)
    • 在服务器上,有一种机制来标记环境(注册表 或文件或其他东西)
    • 在部署期间,我们的脚本读取环境(从注册表) 并放置正确的配置文件。这种方法的优点 是我们不需要为 DEV 与 IT 与 QA 与 产品。

    【讨论】:

    • 希望您有一个适用于 DEV 的 DEBUG 构建和一个适用于其他环境的 RELEASE 构建。将未优化的构建部署到生产环境是一种浪费。
    • 在分支稳定之前的所有构建(进入 ST 的前几天)都将处于 DEBUG 中,其余的一切都将处于 RELEASE 中。
    猜你喜欢
    • 2010-10-24
    • 1970-01-01
    • 2011-03-26
    • 2011-05-29
    • 1970-01-01
    • 2015-01-13
    • 2011-12-05
    • 2011-03-09
    相关资源
    最近更新 更多