测试应该在 dotnet core 的 Debug 还是 Release 配置中运行

edd*_*P23 14 configuration buildconfiguration .net-core

我使用的是 dotnet core 2+,但问题可能更通用。

我的 CI 管道目前看起来像这样:

  • dotnet build -c Release
  • dotnet test
  • dotnet public -c Release --no-build

对于测试步骤,它使用默认Debug配置,因此它也必须使用Debugconfig.js构建应用程序。

因此,我想知道,使用Debug而不是运行测试是否有任何优势,Release或者我应该简单地添加dotnet test -c Release

Art*_*kov 9

我相信可以通过比较“调试”和“发布”之间的差异来进行选择。

在Release模式下:有编译器的优化。编译器做了一些低级改进。这导致原始代码在某些地方可以进行重大更改。(某些变量和方法调用可以通过不明显的方式进行优化)。

在调试模式下:代码未优化,编译器与最终程序集一起生成 .pdb 文件,用于逐步调试。

综上所述,对于测试来说,最好使用Release模式:

  1. 它比调试更轻(不需要.pdb 文件)。
  2. 比 Debug 更快(由于编译器的优化,不会生成 .pdb 文件)。
  3. 测试是针对类似产品的环境运行的。

PS 除此之外,请注意预处理器指令和配置转换(如果存在),并且取决于构建配置。