windows 不使用shell执行时,从System.Diagnostics.Process使用EFCore运行.net核心应用程序失败

wkftcu5l  于 2022-12-24  发布在  Windows
关注(0)|答案(1)|浏览(135)

我有一个.net核心可执行内置在.net 7。这个应用程序使用实体框架核心7下。这个可执行运行良好,从一个cmd行提示符。
我有第二个windows窗体管理GUI项目,我想用它来运行第一个可执行文件,并捕获stdout/stderr的输出。
为此,我创建了一个ProcessStartInfo结构,将UseShellExecute设置为false,并覆盖适当的OutputDataRecieved、ErrorDataRecieved事件处理程序。
当我在没有shell执行的情况下启动第一个进程时,我从EFCore中得到一个System.Configuration.Management dll 5.0.0.0 can not found异常。如果我将UseShellExecute设置为true,问题就会消失,但这样我就无法捕获输出。
有人知道使用shell执行和不使用shell执行在GAC/Assembly查找中的区别吗?以及我如何在两者之间获得相同的行为?

bvpmtnay

bvpmtnay1#

我找到了一个变通办法,改为启动cmd.exe。
在参数中我使用了/C。
这使我能够拥有从cmdline启动可执行文件的确切环境,同时仍然能够关闭ProcessStartInfo参数上的shell执行,从而允许捕获stdout/stderr。

相关问题