win7的吧,点右键,以管理员方式运行就OK了
解决方案 »
- 关于评测表所用控件的问题!
- mdb(Access)的管理系统运行时不需要Access支持吧?
- 求助!XenoCode2005混淆.net2005带强名称的程序集
- 讨厌的错误信息!requires Oracle client software version 8.1.7 or greater
- PPC开发有什么好的界面工具?
- 如何读取配置文件
- C# Unable to find the requested .Net Framework Data Provider问题
- 怎么转换BCD编码啊?
- 求componentone true dbgrid注册码,或者其他好用得dbgrid
- C#工程中做了程序怎样发布到Win98中?
- 各位大神!关于Box与Unbox
- 直线方程
http://msdn.microsoft.com/en-us/library/7a50syb3.aspx
好了,你可以进行断点调试了。
希望能给你点启发。
就是windows定义它启动或停止时超时,即OnStart事件中的代码执行时间是有限制的
如果你把断点直接打在那个里面是没有用的
原因是:那段代码仅当服务处在启动过程中(StartPending)时在运行,启动之后(VS附加能看到进程),那段代码早已经执行完了
你可以将执行(断点)的代码,放到子线程中,服务启动时,启动子线程
由于从服务启动到你手动附加进程已经过去了好几秒了,所以在子线程中先Sleep一段时间,以免你附加成功之后,代码早已经执行过了,调试的目的也就达不到了不过那样调试实在麻烦,
其实实现项目中,一般都会将业务放在单独的.Net类库中,然后用带界面的程序引用,再直接调试就行了
http://www.cnblogs.com/sorex/archive/2012/05/16/2502001.html
一般您看到的是这一个:[你的服务名称].vshost.exe,这个不是你的服务进程。
在附加到进程的界面中,要勾选“显示所有用户进程”,
就能看到您的服务进程了:[你的服务名称].exe
方案一:
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