我建立了一个针对.NET 2.0的Windows服务,在VS 2008中运行它作为控制台应用程序来调试。
控制台应用程序工作得很好。我把它放在我的本地计算机上作为服务,以调试模式编译,仍然非常好。现在我准备发布它,但突然间,当我将其设置为发布模式时,服务编译和安装了,但是没有任何事情发生。(没有任何代码在服务中运行)。
我意识到发布模式和调试模式是属性配置设置,但似乎在发布模式下,即使我检查定义DEBUG常量、取消优化代码和设置调试信息为'full',它仍然做不了任何事情。
将它设置回调试模式,它就像魔法一样再次工作了。
(顺便说一下,我尝试将目标框架重置为3.5,以确保那不是问题。)
所以我的问题(按重要性排序)如下:
使用我的“调试”版本会有任何问题吗?
除了我已经尝试过的三个设置之外,调试和发布之间有哪些不同的设置?
这对我来说似乎是一个奇怪的错误,引起了我的好奇心。有什么想法可以解决这个问题吗?
编辑: 应该提一下,我已经使用自定义安装程序了。基本上我编译程序(无论是调试还是发布),然后用相应的安装程序安装它。
System.ServiceProcess.ServiceBase.EventLog
实例在服务启动时向事件查看器写入消息。例如,在OnStart()
回调中,编写一条消息,指示您至少已经完成了这一步。这将帮助您缩小问题发生的范围。很有可能,您的服务会触发一个异常,导致其关闭。如果是这样,在服务的Main()
函数中放置一个 try-catch 块,并在 catch 块中编写一条消息到事件查看器中,其中包括堆栈跟踪,将显示问题发生的确切位置。 - Matt Davis