本文介绍了如何使用不是由TopShelf识别命令行参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想通过一些自定义参数的控制台应用程序,当我安装并启动它通过TopShelf Windows服务。

I want to pass some custom arguments to the console app when I install and start it as a Windows Service via TopShelf.

当我使用:

MyService install start /fooBar: Test

控制台应用程序失败:

Console application fails:

[失效]命令行一个未知的命令行选项,发现:  DEFINE:Foobar的=测试

问:

我怎样才能让我的论点是识别的TopShelf,这样我可以消耗他们的价值观?

How can I make my arguments to be recognizable by TopShelf so that I can consume their values?

推荐答案

根据需要指定在这个模式的命令的文档:

According to the documentation you need to specify the commands in this pattern:

-foobar:Test

您还需要添加在您的服务配置的定义:

You also need to add the definition in your service configuration:

string fooBar = null;

HostFactory.Run(configurator =>
{
    configurator.AddCommandLineDefinition("fooBar", f=> { fooBar = f; });
    configurator.ApplyCommandLine();

    // do something with fooBar

    configurator.Service<ServiceClass>(settings =>
    {
        settings.ConstructUsing(s => GetInstance<ServiceClass>());
        settings.WhenStarted(s => s.Start());
        settings.WhenStopped(s => s.Stop());
    });

    configurator.RunAsLocalService();
    configurator.SetServiceName("ServiceName");
    configurator.SetDisplayName("DisplayName");
    configurator.SetDescription("Description");
    configurator.StartAutomatically();
});

这篇关于如何使用不是由TopShelf识别命令行参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-18 18:20