10

向公众分发Debug与构建版本是否存在任何安全或性能问题?Release

大多数时候,我只是将 .exe 文件打包到 Debug 文件夹中(连同所需的依赖项)并将其提供给用户。

有什么理由比另一个更喜欢分发一个吗?

4

2 回答 2

10

是的,当然有 - 安全和性能影响。

调试版本包含比发布版本更多的信息,并且许多编译器优化已针对调试版本关闭。

另请参阅此处的调试/发布差异


有什么理由比另一个更喜欢分发一个吗?

是的。如果您想拥有一个经过优化编译的更快的二进制文件,请使用release.

于 2013-01-06T16:12:19.683 回答
8

没有我能想到的安全问题。肯定存在性能问题,程序集的调试版本包含一个属性 (DebuggableAttribute),该属性将始终阻止抖动优化器优化代码。这会对正在运行的程序的性能产生很大的影响。此答案中记录了抖动执行的优化。

您可能会遇到内存消耗问题。垃圾收集器将以不同的方式运行,使局部变量保持活动状态,直到方法体结束。这是一个极端情况,假设您使用真实数据,那么在测试应用程序时应该已经诊断出这样的问题。

特定于 VB.NET,发布 Debug 版本很容易导致程序在没有附加调试器的情况下在用户计算机上运行时崩溃并出现 OutOfMemoryException。它由于 WeakReferences 上的泄漏而失败,Edit+Continue 使用它来跟踪具有带有 WithEvents 关键字的事件处理程序的类。

如果您不需要抖动优化器产生的性能增强并且不发布 VB.NET 程序集,那么无需担心太多。

于 2013-01-06T16:18:33.337 回答