3

topshelfを使用していますが、「-i」オプションを使用してサービスとしてインストールしようとすると、この例外が発生します。

タイプ 'Magnum.CommandLineParser.SwitchElement' のオブジェクトをタイプ 'Magnum.CommandLineParser.IArgumentElement' にキャストできません。

この関数で例外が発生しました

static void Set(TopshelfArguments args, 
                IEnumerable<ICommandLineElement> commandLineElements)
{
    var command = commandLineElements
        .Take(1)
        .Select(x => (IArgumentElement) x) //EXCEPTION BREAKS ON THIS LINE
        .Select(x => x.Id)
        .DefaultIfEmpty("commandline")
        .SingleOrDefault();

    args.Command = command;
    //leftovers
    args.CommandArgs = commandLineElements.Skip(1).ToList();
}
4

2 に答える 2

3

TopShelf を使用してサービスとしてインストールする方法は次のとおりです。

program.exe service install

これが RC コードでサポートされている唯一の方法だと思います。経由でアンインストールできます

program.exe service uninstall
于 2010-07-20T14:26:12.283 に答える
1

-i を渡すと、パーサーがそれを SwitchElement の型に変換しているように見えます。これを試して、動作するかどうかを確認してください。

static void Set(TopshelfArguments args, IEnumerable<ICommandLineElement> commandLineElements)
    {
        var command = commandLineElements
            .Take(1)
            .Select(x => (ISwitchElement) x) 
            .Select(x => x.Key)
            .DefaultIfEmpty("commandline")
            .SingleOrDefault();


        args.Command = command;
        //leftovers
        args.CommandArgs = commandLineElements.Skip(1).ToList();
    }
于 2010-07-20T14:20:10.017 に答える