【发布时间】:2013-01-06 16:05:02
【问题描述】:
向公众分发 Debug 与 Release 构建是否存在任何安全或性能问题?
大多数时候我只是将 .exe 文件打包到 Debug 文件夹中(连同所需的依赖项)并提供给用户。
有什么理由比另一个更喜欢分发一个吗?
【问题讨论】:
标签: c# .net vb.net visual-studio
向公众分发 Debug 与 Release 构建是否存在任何安全或性能问题?
大多数时候我只是将 .exe 文件打包到 Debug 文件夹中(连同所需的依赖项)并提供给用户。
有什么理由比另一个更喜欢分发一个吗?
【问题讨论】:
标签: c# .net vb.net visual-studio
是的,当然有 - 安全和性能方面的影响。
调试版本包含比发布版本更多的信息,并且许多编译器优化已针对调试版本关闭。
也可以在这里查看Debug/Release difference。
有什么理由比另一个更喜欢分发一个吗?
是的。如果您想拥有一个经过优化编译的更快的二进制文件,请使用release。
【讨论】:
没有我能想到的安全问题。肯定存在性能问题,程序集的调试版本包含一个属性 (DebuggableAttribute),它始终会阻止抖动优化器优化代码。这可以对正在运行的程序的性能产生很大的影响。抖动执行的优化记录在this answer。
您可能遇到内存消耗问题。垃圾收集器将以不同的方式运行,使局部变量保持活动状态,直到方法体结束。这是一个极端情况,假设您使用了真实数据,那么在测试应用程序时应该已经诊断出这样的问题。
特定于 VB.NET,在没有附加调试器的情况下在用户计算机上运行时,发布 Debug 版本很容易导致程序崩溃并出现 OutOfMemoryException。由于 WeakReferences 上的泄漏而失败,Edit+Continue 使用它来跟踪具有 WithEvents 关键字的事件处理程序的类。
如果您不需要抖动优化器产生的性能增强并且不发布 VB.NET 程序集,那么无需担心。
【讨论】: