Исключение верхней полки

Я использую 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();
}

person Josh    schedule 20.07.2010    source источник


Ответы (2)


То, как мы используем TopShelf для установки в качестве службы,

program.exe service install

Я считаю, что это единственный способ, которым он поддерживается в коде RC. Вы можете удалить через

program.exe service uninstall
person Travis    schedule 20.07.2010

Похоже, что при передаче -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();
    }
person adriaanp    schedule 20.07.2010