有一个C# console 程序,main里的代码如下:static void Main(string[] args)
{
        ServiceHost myHost = new ServiceHost(typeof(MyService));
        myHost.Open();
        Console.ReadKey();
        myHost.Close();
}执行后会弹出一个命令行窗口,直到按了某个键它才会退出。MyService就是那个实现服务功能的类。现在要把程序改成一个windows服务,我应该怎么做啊?第一次接触C#,大家帮下忙,最好能给出详细的操作步骤,感激不尽!!

解决方案 »

  1.   

    新建项目的时候选择windows服务,把你的console程序放到windows服务里面,然后建立windows服务的安装文件
    可以参考这篇文章
    http://www.cnblogs.com/caca/archive/2005/02/25/109028.html
      

  2.   

    http://topic.csdn.net/u/20110112/14/fcdb8ed2-2c02-4dda-84c8-2cc8a5222886.html
      

  3.   

    这个我试过,但是在windows服务工程里面,类ServiceHost所在的命名空间无法被引用,reference里面也无法加载对应的组件。所以没有办法直接把console的代码移到windows服务里面。另外我以前没有接触过C#,如果大家有什么建议的话,最好能给个示例代码。
      

  4.   

    命名空间被引用?应该引用对应的程序集(项目-添加引用,找到对应的dll)。
      

  5.   

    WindowsService视频 http://blog.csdn.net/sandy945/article/details/4503463
      

  6.   

    首先看目标库所用的.net框架版本,然后把你项目的目标框架版本设置得和它保持一致。
      

  7.   

    找不到对应的DLL。在console工程中,ServiceHost的命名空间是System.ServiceModel,但是在windows服务工程中,根本找不到这个命名空间。另外,我即使在object browser里复制了它的完整路径,在windows资源管理器里也打不开,好像根本就是一个虚拟的路径。
      

  8.   

    将目标框架修改成 .NET 4.0 而不是 .NET 4.0 Client Profile
      

  9.   

    谢谢各位!!原来console工程里ServiceHost所在的命名空间System.ServiceModel,它对应的dll文件在目录C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0下,而新建的windows服务工程默认搜索的目录是v3.5。在添加引用的时候,手工定位目录v3.0,然后加载System.ServiceModel.dll,这样就可以了。其中的原理我也不是太懂,不知道有没有说明白。