将Debug
与Release
版本分发给公众是否存在安全性或性能问题?
大多数情况下,我只是将.exe文件打包在Debug文件夹中(以及必需的依赖项)并将其提供给用户。
有没有理由更喜欢分发一个而不是另一个?
答案 0 :(得分:10)
是的,当然有安全性和性能影响。
调试版本包含的信息多于发布版本,并且许多编译器优化都不适用于调试版本。
有没有理由更喜欢分发一个而不是另一个?
是。如果您想要使用优化编译的更快的二进制文件,请使用release
。
答案 1 :(得分:8)
我无法想到安全问题。肯定存在性能问题,程序集的Debug构建包含一个属性(DebuggableAttribute),它总是会阻止抖动优化器优化代码。这可以对正在运行的程序的性能产生很大的影响。抖动执行的优化记录在this answer。
中您可能遇到内存消耗问题。垃圾收集器将以不同的方式运行,使本地变量保持活动状态,直到方法体结束。这是一个极端情况,假设您使用的是实际数据,那么在测试应用程序时应该已经诊断出这样的问题。
特定于VB.NET,运行Debug构建很容易导致程序在用户的机器上运行而没有连接调试器时因OutOfMemoryException而崩溃。它由于WeakReferences上的泄漏而失败,由Edit + Continue用于跟踪具有WithEvents关键字的事件处理程序的类。
如果您不需要抖动优化器产生的perf增强功能,并且不提供VB.NET程序集,那么就不用担心了。