C#怎么把console程序改成服务,大家帮帮忙!!!

激情的头发 2011-11-10 10:26:06
有一个C# console 程序,main里的代码如下:

static void Main(string[] args)
{
ServiceHost myHost = new ServiceHost(typeof(MyService));
myHost.Open();
Console.ReadKey();
myHost.Close();
}

执行后会弹出一个命令行窗口,直到按了某个键它才会退出。

MyService就是那个实现服务功能的类。现在要把程序改成一个windows服务,我应该怎么做啊?

第一次接触C#,大家帮下忙,最好能给出详细的操作步骤,感激不尽!!
...全文
291 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
激情的头发 2011-11-10
  • 打赏
  • 举报
回复
谢谢各位!!

原来console工程里ServiceHost所在的命名空间System.ServiceModel,它对应的dll文件在目录C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0下,而新建的windows服务工程默认搜索的目录是v3.5。在添加引用的时候,手工定位目录v3.0,然后加载System.ServiceModel.dll,这样就可以了。

其中的原理我也不是太懂,不知道有没有说明白。
threenewbee 2011-11-10
  • 打赏
  • 举报
回复
将目标框架修改成 .NET 4.0 而不是 .NET 4.0 Client Profile
激情的头发 2011-11-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 caozhy 的回复:]
首先看目标库所用的.net框架版本,然后把你项目的目标框架版本设置得和它保持一致。
[/Quote]
这个要怎么看啊?
激情的头发 2011-11-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 caozhy 的回复:]
命名空间被引用?应该引用对应的程序集(项目-添加引用,找到对应的dll)。
[/Quote]
找不到对应的DLL。在console工程中,ServiceHost的命名空间是System.ServiceModel,但是在windows服务工程中,根本找不到这个命名空间。另外,我即使在object browser里复制了它的完整路径,在windows资源管理器里也打不开,好像根本就是一个虚拟的路径。
threenewbee 2011-11-10
  • 打赏
  • 举报
回复
首先看目标库所用的.net框架版本,然后把你项目的目标框架版本设置得和它保持一致。
阿非 2011-11-10
  • 打赏
  • 举报
回复
threenewbee 2011-11-10
  • 打赏
  • 举报
回复
命名空间被引用?应该引用对应的程序集(项目-添加引用,找到对应的dll)。
激情的头发 2011-11-10
  • 打赏
  • 举报
回复
这个我试过,但是在windows服务工程里面,类ServiceHost所在的命名空间无法被引用,reference里面也无法加载对应的组件。所以没有办法直接把console的代码移到windows服务里面。

另外我以前没有接触过C#,如果大家有什么建议的话,最好能给个示例代码。
threenewbee 2011-11-10
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20110112/14/fcdb8ed2-2c02-4dda-84c8-2cc8a5222886.html
wcj1018_net 2011-11-10
  • 打赏
  • 举报
回复
新建项目的时候选择windows服务,把你的console程序放到windows服务里面,然后建立windows服务的安装文件
可以参考这篇文章
http://www.cnblogs.com/caca/archive/2005/02/25/109028.html
dataexcel 2011-11-10
  • 打赏
  • 举报
回复
服务都是没有界面的。你需要写一个程序与服务进行进程通信。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧