【发布时间】:2019-10-03 22:18:30
【问题描述】:
我正在努力完成这项工作。下面是我正在运行的快速测试,但它不会启动 .net core exe。
我在这里将 .net core exe 发布为单个文件,输出类型为 windows exe。如果我在命令行上运行它,它会工作并创建日志等。
var startInfo = new ProcessStartInfo(@"C:\Dev\Console.exe")
{
CreateNoWindow = true,
ErrorDialog = false,
UseShellExecute = false,
RedirectStandardOutput = true,
Arguments = "2019-08-29 25",
WorkingDirectory = @"C:\Dev\"
};
try
{
var process = Process.Start(startInfo);
var standardOutput = process.StandardOutput;
process.WaitForExit();
var output = standardOutput.ReadToEnd();
Debug.WriteLine("Output: " + output);
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString());
}
【问题讨论】:
-
您是否尝试过让您的代码启动 .NET exe 而不是 .NET Core exe?
-
是的,它可以很好地运行其他 .net exe。
-
这是一个不同的名称,只是根据公司政策在示例中进行了更改。
-
我使用 .NET Core 制作了一个“Hello World”“按 Enter 完成”控制台应用程序。我将您的代码复制到 .NET Framework C# 控制台应用程序中(仅修改程序名称和路径)并运行它(按 F5)。虽然我立即什么也没看到,但我能够在任务管理器中终止 .NET Core 应用程序,因此您的代码完成了,并且我在调试消息中看到了控制台应用程序输出。您是否看到“Console.exe”在任务管理器中运行?
-
如果您没有遇到异常,您可以放心地假设它确实设法“启动”了 .exe 文件。使用任务管理器 > 进程选项卡查看此内容。它不似乎运行的标准原因是死锁。正如这段代码很可能发生的那样,当您不阅读其输出时,该程序无法取得进展。所以它不能终止并使 WaitForExit() 完成。