SimpleExec is a .NET library that runs external commands. It wraps System.Diagnostics.Process
to make things easier.
SimpleExec intentionally does not invoke the system shell.
The command is echoed to standard error (stderr) for visibility.
Platform support: .NET Standard 1.3 and upwards.
using static SimpleExec.Command;
Run("foo.exe", "arg1 arg2");
Run("foo.exe");
Run("foo.exe", "arg1 arg2", "my-directory", noEcho: true);
await RunAsync("foo.exe");
await RunAsync("foo.exe", "arg1 arg2", "my-directory", noEcho: true);
var output1 = Read("foo.exe");
var output2 = Read("foo.exe", "arg1 arg2", "my-directory", noEcho: true);
var output3 = await ReadAsync("foo.exe");
var output4 = await ReadAsync("foo.exe", "arg1 arg2", "my-directory", noEcho: true);
If the command has a non-zero exit code, a NonZeroExitCodeException
is thrown with an int
ExitCode
property and a message in the form of:
$"The process exited with code {ExitCode}."
Sometimes, for whatever wonderful reasons, it's necessary to run a different command on Windows. For example, when running Yarn, some combination of mysterious factors may require that you explicitly run cmd.exe
with Yarn as an argument, rather than running Yarn directly. The optional windowsNames
and windowsArgs
parameters may be used to specify a different command name and arguments for Windows:
Run("yarn", windowsName: "cmd", windowsArgs: "/c yarn");
Run by Gregor Cresnar from the Noun Project.