将配置设置为释放或保留为调试

时间:2011-07-25 18:27:23

标签: .net visual-studio compilation configuration-management

在Visual Studio中,当您编译代码以在生产环境中安装它时,您是否将配置更改为“release”?如果你这样做,你有没有发现一些性能提升,或者你做了其他因素?你能分享这个因素吗?

5 个答案:

答案 0 :(得分:3)

发布模式代码通过编译器优化,删除所有调试符号,丢弃项目状态信息,并且可以更有效,更轻松地运行它。 t将库的发布模式版本发布到生产中总是一个好主意。

然而,有一个技巧可以充分利用这两个方面:http://www.hanselman.com/blog/PermaLink.aspx?guid=a40c0d4f-66d0-4704-94f6-0efda4a44465

答案 1 :(得分:2)

将部署内容更改为Release。在优化时释放目标开关。所有其他因素与您的代码相等更快。改进程度取决于您的代码。

Release还会关闭DEBUG和TRACE常量。两者都可以执行其他代码,甚至可以创建通常在生产环境中不需要的文件访问(写入日志)。

答案 2 :(得分:1)

当您将配置设置为Debug时,编译器会生成许多额外信息,以便您可以在Visual Studio中逐步执行代码。如果您正在制作库或任何其他内容,并且您希望它可以生成,那么您不希望发布调试版本。它会变得臃肿。此外,如果它不会优雅地处理崩溃(不是你应该首先处理崩溃:P)。

具体来说,编译器不会像通常那样优化事物,因为它需要某些信息才能返回调试器。发布版本肯定会运行得更快,但并不总是显着提升性能。

答案 3 :(得分:1)

您通常会使用发布配置。调试版通常是较大的文件,有时要大得多;它们通常使用比释放配置更多的内存(因为它们填充变量/全局变量用于调试内存管理等),并且还执行不同的释放,因为它们将未初始化的变量初始化为特定值(通常都是\ 0,但我认为这是可定义的每个项目)。

由于它们还包含调试信息,因此它可以让最终用户更容易地对可执行文件/库进行反向工程,这可能是您不希望它们执行的。

生产环境很可能还需要安装调试库,这会增加您必须与应用程序打包的可重新分发的文件。

答案 4 :(得分:1)

我们已经建立了构建服务器,以便为QA执行发布版本(我们会发布测试内容)。

据我了解,在发布模式下生成的程序集是:

  • 更快
  • 不包含调试信息。

有关更多详细信息,请查看以下内容: