c# 编译器指令在持续交付管道中的使用

c# compiler directives use in a continuous delivery pipeline

我的团队使用编译器指令为不同阶段(调试、测试、发布)创建不同版本的产品,但现在我们想移动 CI/CD 策略,我们正在讨论这是否是个好主意完全使用编译器指令,因为为一种配置生成的工件不能用于另一种配置,例如,我们的 CI 服务器 运行s 使用 test[ 的构建过程=16=] 配置和构建过程的所有阶段都通过,包括 UI 自动化测试,在此过程中创建的工件无法部署到生产中,因为对于生产,应用程序需要使用 版本进行编译 配置从而创建一组新的未经测试的工件来部署生产环境,在我看来,这使得在前一阶段执行的工作已经过时,因为您可能想要 运行 您的测试新创建的工件。

有没有人遇到过类似的情况?如果有,您是如何与您的团队解决的。当您想转向 CI/CD 策略时,使用 c# 编译器指令是个好主意吗?

两年前我们遇到过类似的问题。我们正在为每个环境(DEV、QA、MOCK、PROD)重新构建代码,在某些情况下,环境之间会发生签入并使我们的所有测试无效。当我们开始 CD 之旅时,我们知道我们必须构建 once/deploy 多场景。我们使用 MSDeploy 来部署我们所有的代码。这包括网络 sites/services、windows 服务、计划任务和 SQL 数据库。

我们将所有环境差异放在我们的配置文件中,并通过 Parameterization in MSDeploy 控制转换。参数化在部署时应用。安装程序包含一个 parameters.xml 文件,它定义了需要参数化的内容,以及一个 SetParameters.[environment].xml 文件,用于每个环境以及该环境的相关值。