2013-12-16 10 views
1

我经常使用(而据我记得它工作得很好)#if SERVICE何时工作,何时不工作?

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

服务代码,所以我可以运行它作为控制台或installutil注册并运行的服务。

但是...因为有些更新或切换到4.5.1(甚至可能在发布版本中)它只是不工作了。无论何时我使用installutil或只是作为控制台运行,它都使用控制台的代码,例如,不是为SERVICE,它失败了,因为我在那里使用Console.ReadKey并确保服务无法处理它。

也许我做错了什么,有其他的方法吗?

+0

您确定自动提供SERVICE吗?是不是你的项目配置中的东西丢了? –

+0

就我所知,它不是,甚至是建立在项目系统的一部分。 –

回答

2

...所以我可以运行它作为控制台或installutil注册和运行作为服务

已经不能足够。 #if SERVICE是一个编译时间条件,它不能产生不同的行为,这取决于你如何运行它。它需要一个不同的生成配置。

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

+0

我看到...可能,我现在无法找到/谷歌关于这种用法的另一个信息。 – Cynede