为 Windows 服务 C# 创建安装程序
本文关键字:安装 程序 创建 Windows 服务 | 更新日期: 2023-09-27 18:31:06
>我创建了一个 c# windows 服务当我将我的视觉工作室置于调试模式并运行它时,它可以正常工作但是当我创建一个安装程序并安装它时,它不起作用(意味着服务正确安装并启动,但我的代码没有运行)。(我 https://support.microsoft.com/en-us/kb/816169 构建了这样的设置)这是我的代码: 这是我的代码:dropbox.com/s/eq13fng88gk714u/myTelephone.zip?dl=0
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main()
{
#if DEBUG
myTelephone myService1 = new myTelephone();
myService1.onDebug();
System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
#else
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new myTelephone()
};
ServiceBase.Run(ServicesToRun);
#endif
}
和
public partial class myTelephone : ServiceBase
{
public myTelephone()
{
InitializeComponent();
} public void onDebug()
{
OnStart(null);
}
protected override void OnStart(string[] args)
{
//////save some data in sql server
}}
在询问之前,您甚至尝试过用谷歌搜索一下吗?
无论如何,只需通过nuget使用Topshelf 即可。这样,在调试和安装时始终执行相同的代码。
由于除了"它不起作用"之外,您没有提供任何内容,因此我将尝试假设:
- 您的 Windows 服务未安装,然后查看"您的服务可执行文件".exe。安装日志文件位于"您的服务可执行文件"所在的同一文件夹中;
- 或者 Windows 服务已成功安装,但它没有启动 - 然后转到事件查看器并查找与您的服务相关的错误消息。如果是这种情况,那么很可能是因为您的 OnStart 方法超时。在这种情况下:
在方法中请求额外的时间:
// request additional 4 seconds for the start-up process
this.RequestAdditionalTime(4000);
或者将访问 SQL 数据库的代码移出该方法,例如,创建一个新线程并在那里执行所有员工操作。
我认为您正在尝试通过clickicg exe文件安装它。这是不正确的。下一步尝试:
-
打开厘米目录
-
cd 到目录与我的电话.exe
-
运行下一个
sc create myTelephone binpath= "myPhone.exe" start= auto
网络启动我的电话
或者您也可以添加到预构建事件:
net stop $(ProjectName)
sc delete $(ProjectName)
exit /b 0
作为构建后事件:
sc create $(ProjectName) binpath= "$(TargetPath)" start= auto
net start $(ProjectName)
在每个构建中,您将安装服务。