gpt4 book ai didi

c# - 在 powershell 中获取 wpf 应用程序的退出代码

转载 作者:行者123 更新时间:2023-11-30 17:34:08 25 4
gpt4 key购买 nike

我正在尝试获取在 Powershell 脚本中调用的 wpf 应用程序的退出代码。

我在 WPF 中的主要内容:

[STAThread]
public static int Main(string[] args)
{
if (args != null && args.Length > 0)
{
NB_ERRORS = AutomaticTests.Program.Main(args);
return NB_ERRORS;
//Application.Current.Shutdown(NB_ERRORS);
}
else
{
App app = new App();
app.Run(new MainWindow());

//Application.Current.Shutdown(NB_ERRORS);
return NB_ERRORS;
}
}

在 powershell 中我这样调用它:

& $PathToExeTests 0 $LogTestsStagging
$nbFailed = $LASTEXITCODE

但它始终包含 0。

我试过手动设置 Environment.ExitCode,用代码关闭应用程序,像这样覆盖 OnExit :

protected override void OnExit(ExitEventArgs e)
{
e.ApplicationExitCode = AutomaticTests.GUI.Program.NB_ERRORS;
base.OnExit(e);
}

但我在 LastExitCode 中始终为 0。

最佳答案

默认情况下,当您启动 GUI 应用程序时,PowerShell(就像 cmd.exe)不会等待应用程序退出;它只会告诉 Windows 开始加载应用程序,然后继续运行脚本。

有几种方法可以等待 GUI 应用程序退出。

选项 1:使用 Start-Process 启动应用程序,然后将生成的 Process 对象传递给 Wait-Process。这可以很容易地写成管道:

Start-Process $PathToExeTests -ArgumentList @(0, $LogTestsStaging) | Wait-Process

选项 2:如果您对应用的标准输出执行某些操作(将其分配给变量,或将其通过管道传输到另一个命令),PowerShell 将自动等待进程退出。

& $PathToExeTests 0 $LogTestsStaging | Out-Null

如果其他人要维护您的代码,选项 1 可能会更具可读性,但偶尔您也会看到选项 2。

关于c# - 在 powershell 中获取 wpf 应用程序的退出代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42905363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com