【发布时间】:2021-11-02 03:22:41
【问题描述】:
好的,我已经编写了一个控制台应用程序并且它可以工作。这是代码。
static void Main(string[] args)
{
IceMain.Instance.Start();
Console.ReadLine();
IceMain.Instance.Stop();
IceMain.Instance.Term();
}
现在,当我编写 C# Windows 服务并尝试启动该服务时。它没有用。这是 Windows 服务代码...
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
IceMain.Instance.Start();
}
protected override void OnStop()
{
IceMain.Instance.Stop();
IceMain.Instance.Term();
}
}
当然,我给了它一个服务名称,sid,并正确设置了东西。 但是当我做 net start sid 时,它给了我:
Microsoft (R) .NET Framework 安装实用程序版本 4.8.3752.0 版权所有 (C) 微软公司。版权所有。 初始化安装时出现异常:
System.BadImageFormatException:无法加载文件或程序集 'file:///C:\Project\sptrader_dotnet\ICEService\IcePrice\bin\Debug\IcePrice.exe' 或其依赖项之一。试图加载格式不正确的程序.. 服务名称无效。
键入 NET HELPMSG 2185 可获得更多帮助。
我所知道的是,底层应用程序还依赖于几个 x64 C++ DLL。 但是我确实将我的服务设置为在 x64 平台上编译,并确保这些 Dll 在示例文件夹中,但该服务仍然无法运行,而在控制台应用程序中,它可以工作。
这是怎么回事,我该如何修复它以在 Windows 服务上运行? 它似乎与我的服务名称没有任何关系,因为我之前编写了许多 Windows 服务并且一切正常,但对于这种情况,它涉及一些 C++ DLL。
【问题讨论】:
-
什么是
IceMain.Instance?你在哪里打电话ServiceBase.Run()?
标签: c# dll windows-services