当#if SERVICE工作时,什么时候不工作?

时间:2013-12-16 10:30:37

标签: c# .net service

我经常使用(据我记得它工作得很好)

        public static void Main() {
#if SERVICE
            ServiceBase.Run(new MyService());
#else
            ....
#endif

在服务代码中,因此我可以将其作为控制台运行或注册installutil并作为服务运行。

但是......自从一些更新或切换到4.5.1(甚至可能在发布版本中)它再也不起作用了。每当我使用installutil或只是作为控制台运行时,它都使用控制台代码,例如不适用于SERVICE而且它失败了,因为我在那里使用Console.ReadKey并确保服务无法处理它。

也许我做错了什么,还有其他办法吗?

1 个答案:

答案 0 :(得分:2)

  

...所以我可以将它作为控制台运行或使用installutil注册并作为服务运行

这还不够。 #if SERVICE是编译时条件,根据您的运行方式,它不能产生不同的行为。它需要不同的Build配置。

我的猜测是你在升级后丢失了一件工具或忘记了某种习惯。