[英]Convert console application to windows service
我有一个控制台应用程序,我正在运行SignalR。 我试图将其转换为Windows服务应用程序。
我只是换了Main
方法
static void Main()
{
var servicesToRun = new ServiceBase[]
{
new MyService()
};
ServiceBase.Run(servicesToRun);
}
并添加了一个简单的服务类:
namespace Services
{
partial class MyService : ServiceBase
{
IDisposable SignalR { get; set; }
public MyService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
const string url = "https://localhost:8080";
using (SignalR = WebApp.Start<Startup>(url))
{
//TODO: Add Logging
}
}
protected override void OnStop()
{
SignalR.Dispose();
}
}
}
但是现在当我尝试运行安装程序时,我收到错误:
初始化安装时发生异常:System.BadImageFormatException:无法加载文件或程序集'file:/// C:\\ Code \\ MyCode \\ Services \\ bin \\ Debug \\ MyService.exe'或其依赖项之一。 尝试加载格式不正确的程序。
有没有简单的方法来调试此消息? 或者有没有人知道我可能错过了什么?
你是如何运行安装的? 我猜你是在用64位安装程序注册一个32位编译的应用程序,反之亦然
换句话说,运行:
%windir%\Microsoft.NET\Framework\v4.0.30319\installutil.exe <My x64 DLL/EXE>
要么:
%windir%\Microsoft.NET\Framework64\v4.0.30319\installutil.exe <My x86 DLL/EXE>
您错过了在服务中创建安装程序在设计视图中的服务中,右键单击并选择添加安装程序或类似,我的vs是西班牙语。 这将向项目ProjectInstaller
添加一个新组件,其中包含serviceProcessInstaller1
和serviceInstaller1
中的两个组件,您必须确定一些属性,这些属性可以确保安装,服务帐户,名称,描述等的行为。您可以运行installutil.exe安装,没有这个installutil什么都不做
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.