EDIT:これは、サービスとして実行しているときではなく、.exeを実行している場合にのみ機能します。あなたはこの中でコマンドを指定する必要がドキュメントによると
using System.Configuration;
// snip
string foobar = null;
HostFactory.Run(configurator =>
{
foobar = ConfigurationManager.AppSettings["foobar"];
// 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();
});
:あなたが設定値としてオプションを追加し、(とにかく、おそらくより良い習慣です)起動時にそれを読むことができ、代替として、パターン:
-foobar:Test
あなたはまた、あなたのサービスの設定で定義を追加する必要があります。
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();
});
AddCommandLineDefinition()の後、//何かをする前に、次の行を追加する必要があります: configurator.ApplyCommandLine(); – Todd
ServiceClassにコマンドライン引数を追加できますか? 私はそれをやろうとしていますが、サービスとして開始するとうまくいきません。 – fuLLMetaLMan
はい。これは、サービスとしてインストール/開始するときには機能しません。 foobarは空です。 @fuLLMetaLMan:あなたは答えを見つけましたか? –