我有一个简单的场景,我继承了构建配置与标准配置的名称非常不同的代码。
特别是,我们的“生产”配置更像我们的发布配置。
所以我想我有几个问题:
- 需要打开或关闭什么,以便我可以仔细检查,以使某些东西成为“发布”配置?诸如代码优化、调试符号等之类的东西。
- 如果启用了代码优化等,与库存的 Release 配置有什么不同吗?那些可能在 JIT 或编译器级别硬编码的东西?
- 除了第 1 项中的内容以及标准版本配置中的内容之外,是否还有其他应该启用/禁用的东西会在配置级别导致明显的性能影响?
我有一个简单的场景,我继承了构建配置与标准配置的名称非常不同的代码。
特别是,我们的“生产”配置更像我们的发布配置。
所以我想我有几个问题:
1 和 2 - 发布和调试之间的差异非常小:优化已打开(请参阅Eric Lippert 的含义),并且没有为发布构建定义 DEBUG。
了解两种配置有何不同的最简单方法是创建基本项目并比较配置部分以进行调试和发布。
调试: Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "
<Optimize>false</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>
释放:Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "
<Optimize>true</Optimize>
<DefineConstants>TRACE</DefineConstants>
调试信息类型也有区别,但主要影响调试的方便性。
3 - 对于所有类型的解决方案来说,没有什么是通用的以提高性能。每种类型的解决方案都有调整性能的方法——正确的日志配置、在 ASPX 中编译相关文件的选项、NGen 到 pre-JIT、选择 x86/x64……基本上你需要开始做常规的性能工作——设定目标、测量、调整/优化。