我已经为topshelf程序添加了命令行支持,如下所示:
HostFactory.Run(hostConfigurator =>
{
hostConfigurator.AddCommandLineDefinition("params", f => { startParams = f; });
hostConfigurator.ApplyCommandLine();
}
这很好用。
当我将其作为服务安装时,我希望在已安装的服务中启动参数'它会起到同样的作用,但它没有。
任何人都可以告诉我如何访问“启动参数”#39;来自TopShelf?
我希望多次(使用不同的实例名称)安装相同的服务,这些服务因启动参数而异,我也想用它来传递测试值。
我想只是以编程方式访问这些标准服务可能会让我指向正确的方向。
感谢。
答案 0 :(得分:1)
与服务安装相关的参数,例如servicename,description,instancename等,可以按如下方式访问
HostFactory.Run(x =>
{
x.Service((ServiceConfigurator<MyService> s) =>
{
s.ConstructUsing(settings =>
{
var instanceName= settings.InstanceName;
return new MyService();
});
}
}
或者,如果您的MyService实现了ServiceControl
HostFactory.Run(x =>
{
x.Service<MyService>((s) =>
{
var instanceName= s.InstanceName;
return new MyService();
});
}
/***************************/
class MyService : ServiceControl
{
public bool Start(HostControl hostControl) { }
public bool Stop(HostControl hostControl) { }
}
我不确定你的意思&#34;启动参数&#34;,如果上面不是你想要的,尝试用伪代码示例来解释你想要实现的目标。