我有一个控制台应用程序,我正在运行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'或 其中一个依赖项。尝试加载程序 格式不正确..
有没有简单的方法来调试此消息?或者有没有人知道我可能错过了什么?
答案 0 :(得分:3)
您是如何运行安装的?我猜你用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>
答案 1 :(得分:0)
您错过了在服务中创建安装程序
在设计视图中的服务中,右键单击并选择添加安装程序或类似,我的vs是西班牙语。
这为项目ProjectInstaller
添加了一个新组件,其中包含serviceProcessInstaller1
和serviceInstaller1
内的两个组件,您必须确定一些属性,这些属性可以确保安装,服务帐户,名称,描述的行为。等
你可以运行installutil.exe进行安装,没有这个installutil什么都不做