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 回答