● 如何debug Windows服务

传统方式:记录log到文件,然后查看log。

其他方式:
1、项目属性-输出类型,更改为控制台应用程序
2、修改Porgram.cs:

// 注释掉
// ServiceBase.Run(ServicesToRun);

// 使用RunInteractive执行原有Service功能
RunInteractive(ServicesToRun);

增加方法:

static void RunInteractive(ServiceBase[] servicesToRun)
{
    // 利用Reflection取得非公开的 OnStart() 方法信息
    MethodInfo onStartMethod = typeof(ServiceBase).GetMethod("OnStart",
        BindingFlags.Instance | BindingFlags.NonPublic);

    // 执行 OnStart 方法
    foreach (ServiceBase service in servicesToRun)
    {
        Console.Write("Starting {0}...", service.ServiceName);
        onStartMethod.Invoke(service, new object[] { new string[] { } });
        Console.Write("Started");
    }

    Console.WriteLine("Press any key to stop the services");
    Console.ReadKey();

    // 利用Reflection取得非公开的 OnStop() 方法信息
    MethodInfo onStopMethod = typeof(ServiceBase).GetMethod("OnStop",
        BindingFlags.Instance | BindingFlags.NonPublic);

    // 执行 OnStop 方法
    foreach (ServiceBase service in servicesToRun)
    {
        Console.Write("Stopping {0}...", service.ServiceName);
        onStopMethod.Invoke(service, null);
        Console.WriteLine("Stopped");
    }
}

文章来源: 《[Windows Service] 如何對Windows Service進行除錯》