gpt4 book ai didi

c# - 创建新的 .Net Core 控制台进程 : Exception when using environment variables with UseShellExecute=true

转载 作者:行者123 更新时间:2023-12-05 02:05:26 39 4
gpt4 key购买 nike

我想从一个控制台运行多个 .Net Core 控制台应用程序。我有以下代码:

        var startInfo = new ProcessStartInfo("c:\path\to\filename.exe", "arguments")
{
UseShellExecute = true,
WorkingDirectory = "c:\working\directory",
};
var process = Process.Start(startInfo);

我收到以下异常:System.InvalidOperationException:“Process 对象必须将 UseShellExecute 属性设置为 false 才能使用环境变量。”

应用程序使用 WorkingDirectory 中的 appsettings.json 文件中的变量。

如何在单独的控制台中成功运行应用进程?

最佳答案

因为这是错误消息的最高搜索结果

The Process object must have the UseShellExecute property set to false in order to use environment variables

,在查看了 EnvironmentVariables 的引用资料后,我想我会加入一个观察。这里并与 ProcessStartInfo内部支持变量的使用进行比较在这里。

很可能,您来到这里可能是因为您正坐在带有断点的 Visual Studio 前,试图找出使 UseShellExecute 正常工作的正确魔法。

如果您查看局部变量或即时窗口,或者序列化 ProcessStartInfo 类对象,或者基本上执行任何可能直接或间接访问 ProcessStartInfo.EnvironmentVariables 的操作,代码将实例化集合并填充它!然后,当您实际尝试启动该过程时,该方法的开始部分会将您的配置视为无效。

使 UseShellExecute 工作的唯一方法是确保 environmentVariables 支持字段保持为空,这样做意味着您不能以任何方式(直接或间接)访问它。

关于c# - 创建新的 .Net Core 控制台进程 : Exception when using environment variables with UseShellExecute=true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63536133/

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