Bra*_*ndi 15 c# windows-services release properties visual-studio
我在VS 2008中构建了一个针对.NET 2.0的Windows服务.我将其作为控制台应用程序运行以进行调试.
控制台应用程序运行良好.我把它放在我的本地计算机上作为服务,在调试模式下编译,仍然工作得很好.我已准备好立即发布,突然,当我将其设置为发布模式时,服务会编译并安装,但没有任何反应.(根本没有运行中的代码).
我意识到发布与调试模式是属性配置设置,但似乎在发布模式下,即使我检查定义DEBUG常量,取消选中Optimize代码,并将Debug info设置为'full',它仍然无效.
将它设置回调试,它再次像魅力一样工作.
(作为旁注,我尝试将目标框架重置为3.5,以确保不是问题)
所以我的问题(按重要性排序)是这些:
将以任何方式使用我的"调试"版本会导致任何问题吗?
除了我已经尝试改变的三个设置之外,调试和发布之间的设置有何不同?
这对我来说似乎是一个奇怪的错误,并激起了我的好奇心.知道是什么会导致这个吗?
编辑:应该提一下,我已经在使用自定义安装程序.基本上我编译程序(在调试或发布中),然后使用相应的安装程序安装它.
Guf*_*ffa 17
1)它可能,如果不是直接的,间接地通过使应用程序更慢并使其使用更多的内存.
2)当它在调试模式下运行时,某些东西的工作方式不同,例如:
代码使用一些额外的NOP指令进行编译,因此在每个代码行的开头至少有一条指令,这样就可以在任何一行放置一个断点.
指令可以在发布模式下重新排列,但不能在调试模式下重新排列,因此代码可以单步执行,结果将对应于源代码的确切顺序.
垃圾收集器的工作方式不同,它允许引用在整个范围内存活,而不是仅在它们被使用的时候存活,这样变量可以在调试模式下查看,而不会在范围结束之前消失.
异常包含更多信息,并且在抛出时需要花费更长的时间来处理.
所有这些差异都相对较小,但它们是实际差异,在某些情况下它们可能很重要.
如果您发现调试模式和发布模式之间的性能差异很大,通常是因为代码存在问题,例如,如果它抛出并捕获大量异常.如果代码中存在竞争条件,则可能仅在发布模式下发生,因为调试模式中存在一些额外开销会导致代码运行稍慢.
3)至于你的服务有什么问题,我不知道,但它似乎与在调试模式或发布模式下如何执行代码无关.代码将在任何情况下启动,如果它是代码的问题,它将崩溃,您将能够在事件日志中看到它.
| 归档时间: |
|
| 查看次数: |
9789 次 |
| 最近记录: |