win7的吧,点右键,以管理员方式运行就OK了

解决方案 »

  1.   

    Msdn 虽然有如何调试,几个月前我看过,就是嫌太麻烦,没有用。我当时直接用输出log信息调试
    http://msdn.microsoft.com/en-us/library/7a50syb3.aspx
      

  2.   

    System.Diagnostics.Debugger.Launch();在想加断点的地方加入这行,是进入断点的,可以进行调试,我的是xp系统,win7 没试过
      

  3.   

    建议你先在控制台跑,搞好了再改造成Windows服务。
      

  4.   

     在VS中,设置相关断点,启动调试,再在工具栏中选择 调试->附加到进程..., 选择您的服务, 确定 
     好了,你可以进行断点调试了。
      

  5.   

    确实需要“控制台运行”。在控制台模式下,程序初始化结束后进入Pending状态即可(ManualResetEvent.WaiOne())。开发专业的服务器程序,应该注重测试而不是调试。在测试引擎的操作下,每天对各种服务功能进行上万次地模拟调用,并且是并发调用测试。在测试引擎的辅助下,才能去驱动出好的开发过程。服务器程序通常因为必须多线程编程而变得情况非常复杂,(从实践来说)根本不可能像软件作坊里的学生编写程序那样以调试操作来驱动出开发过程。
      

  6.   

    在控制台模式下,程序初始化结束后进入Pending状态即可(ManualResetEvent.WaiOne())。并且通常需要在控制台下打印通讯内容,以便了解一些特别的系统故障的原因。控制台下作为服务程序都OK了,发布时发布为windows service调用同样的dll中的业务过程就行了。winservice的程序跟控制台程序的差别只有几行语句的差别,没有什么大的差别。
      

  7.   

    服务是不能调试的。只能用log记录日志进行调试及判断问题
      

  8.   

    http://blog.csdn.net/yeqi3000/article/details/8248266
    希望能给你点启发。
      

  9.   

    服务的确可以调试,但是相对控制台或者网页又有点不太一样,服务有一点特殊
    就是windows定义它启动或停止时超时,即OnStart事件中的代码执行时间是有限制的
    如果你把断点直接打在那个里面是没有用的
    原因是:那段代码仅当服务处在启动过程中(StartPending)时在运行,启动之后(VS附加能看到进程),那段代码早已经执行完了
    你可以将执行(断点)的代码,放到子线程中,服务启动时,启动子线程
    由于从服务启动到你手动附加进程已经过去了好几秒了,所以在子线程中先Sleep一段时间,以免你附加成功之后,代码早已经执行过了,调试的目的也就达不到了不过那样调试实在麻烦,
    其实实现项目中,一般都会将业务放在单独的.Net类库中,然后用带界面的程序引用,再直接调试就行了
      

  10.   

    參考這個,寫了一個UI來控制服務,可附加可調式,有源碼,你可以下載來看看
    http://www.cnblogs.com/sorex/archive/2012/05/16/2502001.html
      

  11.   

    这个原因是这样的:
    一般您看到的是这一个:[你的服务名称].vshost.exe,这个不是你的服务进程。
    在附加到进程的界面中,要勾选“显示所有用户进程”,
    就能看到您的服务进程了:[你的服务名称].exe
      

  12.   

    推荐你先写成应用程序再改成服务.一般来说服务是可以调试的,你发布运行的代码是debugger的吗?
      

  13.   

    只可惜附加进程的方式只能调试停止和进程休眠或时间间隔的操作,对于服务启动时的调试却不行,其实可以做下面操作:
    方案一:
    1. 更改项目的输出类型由Windows 应用程序为控制台应用程序
    2. 项目--属性--在调试设置页面启动选项的命令行参数中随意输入几个字符,如DEBUG
    3. 关键的地方来了,转到Program.cs页面的Main函数处,手动加入一个参数,如static void Main(string[] args)
    4. 在Main中更改代码
    if(args.Length==0)//这是服务启动的条件
    {
            //将原有生成的启动服务的代码拷贝至此处
    }
    else//即有启动选项的命令行参数DEBUG了
    {
            //将服务中的类当作一个普通类来使用即可,如
            ***Service srv = new ***Service();
            Console.Read();
    }
    5. 调试时,直接在项目处点击鼠标右键,选择 调试—启动新实例,这样就进入了else模式,就可以不用作为服务来运行了。
    方案二:
    可参考:http://blog.csdn.net/sqqyq/article/details/8248266