[英]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.