创建新的 .Net Core 控制台进程:使用 UseShellExecute=true 的环境变量时出现异常
Creating new .Net Core Console Process: Exception when using environment variables with UseShellExecute=true
我想从一个控制台 运行 多个 .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: 'The Process object must have the UseShellExecute property set to false in order to use environment variables.'
应用程序使用 WorkingDirectory
中的 appsettings.json
文件中的变量。
如何运行 应用程序在单独的控制台中成功处理?
这可能有帮助
var startInfo = new ProcessStartInfo("cmd.exe", @"/K ""c:\path\to\filename.exe"" arguments")
{
UseShellExecute = false,
WorkingDirectory = @"c:\working\directory",
//CreateNoWindow = true
};
var process = Process.Start(startInfo);
因为这是错误消息的热门搜索结果
The Process object must have the UseShellExecute property set to false in order to use environment variables
,我想在查看了 EnvironmentVariables 的参考资料后,我会加入一个观察
并与 内部 后备变量的使用进行比较 ProcessStartInfo here.
很可能,您来到这里可能是因为您正坐在 Visual Studio 前面,有一个断点,试图弄清楚使 UseShellExecute 工作的正确魔法是什么。
如果您查看局部变量或立即数 windows,或者您序列化 ProcessStartInfo class 对象,或者基本上做任何可能直接或间接访问 ProcessStartInfo.EnvironmentVariables 的事情,代码将实例化集合并填充它!然后,当您实际尝试启动该过程时,该方法的开始部分会将您的配置视为无效。
使 UseShellExecute 工作的唯一方法是确保 environmentVariables 支持字段保持为空,而这样做意味着您不能以任何方式(直接或间接)访问它。
我想从一个控制台 运行 多个 .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: 'The Process object must have the UseShellExecute property set to false in order to use environment variables.'
应用程序使用 WorkingDirectory
中的 appsettings.json
文件中的变量。
如何运行 应用程序在单独的控制台中成功处理?
这可能有帮助
var startInfo = new ProcessStartInfo("cmd.exe", @"/K ""c:\path\to\filename.exe"" arguments")
{
UseShellExecute = false,
WorkingDirectory = @"c:\working\directory",
//CreateNoWindow = true
};
var process = Process.Start(startInfo);
因为这是错误消息的热门搜索结果
The Process object must have the UseShellExecute property set to false in order to use environment variables
,我想在查看了 EnvironmentVariables 的参考资料后,我会加入一个观察 并与 内部 后备变量的使用进行比较 ProcessStartInfo here.
很可能,您来到这里可能是因为您正坐在 Visual Studio 前面,有一个断点,试图弄清楚使 UseShellExecute 工作的正确魔法是什么。
如果您查看局部变量或立即数 windows,或者您序列化 ProcessStartInfo class 对象,或者基本上做任何可能直接或间接访问 ProcessStartInfo.EnvironmentVariables 的事情,代码将实例化集合并填充它!然后,当您实际尝试启动该过程时,该方法的开始部分会将您的配置视为无效。
使 UseShellExecute 工作的唯一方法是确保 environmentVariables 支持字段保持为空,而这样做意味着您不能以任何方式(直接或间接)访问它。