2014-10-31 72 views
0

我能够直接从Visual Studio运行我的Windows服务,而无需通过点击F5进行安装。为什么Windows服务不提取代码更改?

我能够做到这一点,因为在我的Program.cs有节:

  var service = new JSpargoService(); 
#if DEBUG 
     var logger = Log.GetLogger<JSpargoService>(); 
     logger.Warn("Start service as console application... for debuging purposes! Please  use 'Release' mode to run as windows service!"); 
     service.Start(); 
     Console.WriteLine("Running..."); 
     Console.WriteLine("Press any key to stop program!"); 
     Console.Read(); 
     service.Stop(); 
#else 
     ServiceBase[] ServicesToRun; 
     ServicesToRun = new ServiceBase[] 
     { 
      service 
     }; 
     ServiceBase.Run(ServicesToRun);   
#endif 

太好了,我可以调试和走。 这是我的问题。 Windows没有收到我的代码更改。 因此,当我修改我的新代码时,可能会添加一个新变量并将结果返回给它,当我将它悬停在它上面时,它就像var不存在一样。

这就像它不会在调试模式下重新编译。 奇怪。 请帮忙!

回答

0

您是否期望它在您的服务实际运行时重新编译您的代码?这不会发生。

+0

当然不是。我阻止它。修改代码。并重新启动它。新代码无法识别。如果您悬停新代码,则什么也没有。如果您将鼠标悬停在旧代码上,您可以看到该值。 新代码上的断点就消失了。 但调试文件夹中的dll有一个像刚编译的日期。这只是没有意义。 – Sam 2014-10-31 19:36:25

+0

好的 - 所以问题并不完全是我以为是的。 我可以将“我的服务开始...”和“我的服务停止...”并在控制台窗口中查看。所以我能够进行编辑。 但服务实例化的另一个类是无法修改和重新编译的类。 – Sam 2014-10-31 19:55:30

+0

我终于注意到代码和行号之间的黄线。所以问题是它不会让我保存文件。但是文件的Tab中没有带名称的asterix。所以看起来它已被保存。 – Sam 2014-10-31 20:37:19

相关问题