C# 使用参数启动WPF应用程序

C# 使用参数启动WPF应用程序,c#,wpf,arguments,scheduled-tasks,startup,C#,Wpf,Arguments,Scheduled Tasks,Startup,我正在尝试实现一种方法,通过Windows任务调度和CMD使用特定参数启动WPF应用程序。我在下面添加了代码 protected override void OnStartup(StartupEventArgs e) { Logger.Info(e.Args.Length); for (int i = 0; i != e.Args.Length; ++i) { if (e.

我正在尝试实现一种方法,通过Windows任务调度和CMD使用特定参数启动WPF应用程序。我在下面添加了代码

protected override void OnStartup(StartupEventArgs e)
        {

            Logger.Info(e.Args.Length);

            for (int i = 0; i != e.Args.Length; ++i)
            {
                if (e.Args[i] == "test")
                {
                    Logger.Info($"G");
                }
                else
                {
                    Logger.Info($"B");
                }
            }
}
当我开始发布应用程序并通过CMD启动它或在带有参数的任务调度中调度它时,
e.Args.Length
为0。但是,当我在
Properties>Debug>命令行参数中添加参数时,它确实起作用。

知道我遗漏了什么吗?

要使用命令参数运行应用程序表单cmd,请使用以下格式-

C:\StackOverflow\Bin\Debug> StackOverflow.exe arg1 arg2

您需要在
System
命名空间中使用
Environment
类,并使用
GetCommandLineArgs()
方法检索参数

比如说,

Args = Environment.GetCommandLineArgs();

根据问题的评论,我假设问题在于起始参数传递错误。ClickOnce应用程序的工作方式与.exe文件类似,由于安全原因,无法使用CMD中的参数启动 ()


我建议您看看,它很好地描述了如何通过查询字符串将参数传递给应用程序。

这是您正在寻找的@GK吗?我已经尝试过了,但也有同样的问题看起来您正在创建ClickOnce应用程序,对吗?您是否尝试过使用AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData获取参数?@LittleBit我刚刚尝试过,但只是得到一个空引用您是如何尝试启动应用程序的?喜欢Sham提供的格式吗?我喜欢,但它仍然不起作用。它不是一个.exe,而是一个.application。这有关系吗?@JasonLie这是一个clickonce应用程序吗?应用程序启动了吗?或者您有任何错误?你能分享一下这个命令吗?这个命令只是“Program.application test”。它确实会启动,但当我打印参数数组的长度时,它会显示0发布时我是否可以将其更改为.exe?@JasonLie您如何创建
.Application
文件?据我所知,它是通过
ClickOnce
创建的,将有一种不同的机制将参数发送到
ClickOnce
应用程序。