顶层例外

发布于 2024-09-10 18:38:04 字数 752 浏览 10 评论 0原文

我正在使用 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();
}

I'm using topshelf and I'm getting this exception when I try to use the "-i" option to install as a service.

Unable to cast object of type 'Magnum.CommandLineParser.SwitchElement' to type 'Magnum.CommandLineParser.IArgumentElement'.

Exception occurs in this function

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();
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

著墨染雨君画夕 2024-09-17 18:38:04

我们使用 TopShelf 作为服务安装的方式是

program.exe service install

我相信这是 RC 代码支持的唯一方式。您可以通过卸载

program.exe service uninstall

The way we use TopShelf to install as a service is

program.exe service install

I believe this is the only way it's supported in the RC code. You can uninstall via

program.exe service uninstall
z祗昰~ 2024-09-17 18:38:04

看起来当传入 -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();
    }

Looks like when passing in -i that the parser is converting it to a type of SwitchElement. Try this to see if it works.

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();
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文