.net 将配置设置为“发布”或“保留为调试”

.net 将配置设置为“发布”或“保留为调试”,.net,visual-studio,compilation,configuration-management,.net,Visual Studio,Compilation,Configuration Management,在VisualStudio中,当您编译代码以在生产环境中安装它时,是否将配置更改为“release”?如果你这样做了,你是否发现了一些性能改进,或者是因为其他因素?您可以分享这个因素吗?当您将配置设置为调试时,编译器会生成大量额外信息,以便您在visual studio中逐步完成代码。如果您正在制作一个库,或者任何真正的东西,并且希望它是生产的,那么您不希望发布调试版本。它会膨胀的。此外,如果它不能优雅地处理崩溃(首先你不应该有任何崩溃:P) 具体来说,编译器不会像通常那样优化事情,因为它需要某

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

当您将配置设置为调试时,编译器会生成大量额外信息,以便您在visual studio中逐步完成代码。如果您正在制作一个库,或者任何真正的东西,并且希望它是生产的,那么您不希望发布调试版本。它会膨胀的。此外,如果它不能优雅地处理崩溃(首先你不应该有任何崩溃:P)


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

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

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


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

发布模式代码经过编译器优化,所有调试符号都将删除,项目状态信息会被丢弃,而且要尽可能高效轻松地运行它,还需要更多信息。将库的发布模式版本发布到生产环境总是一个好主意


然而,有一个技巧可以两全其美:

我们已经设置了构建服务器来为QA进行发布构建(并且我们提供我们测试的内容)

据我所知,在发布模式下生产的组件包括:

  • 更快
  • 小的
  • 不包含调试信息
有关更多详细信息,请查看以下内容:


将其更改为针对您部署的内容发布。释放优化上的目标开关。所有其他因素都与代码速度相等。改进的程度取决于您的代码


Release还关闭调试和跟踪常量。两者都可能会执行额外的代码,甚至创建您通常不希望在生产环境中使用的文件访问(写入日志)。

这可能是许多问题的重复,因此:,