SimpleExec 10.0.0-beta.1
See the version list below for details.
dotnet add package SimpleExec --version 10.0.0-beta.1
NuGet\Install-Package SimpleExec -Version 10.0.0-beta.1
<PackageReference Include="SimpleExec" Version="10.0.0-beta.1" />
paket add SimpleExec --version 10.0.0-beta.1
#r "nuget: SimpleExec, 10.0.0-beta.1"
// Install SimpleExec as a Cake Addin #addin nuget:?package=SimpleExec&version=10.0.0-beta.1&prerelease // Install SimpleExec as a Cake Tool #tool nuget:?package=SimpleExec&version=10.0.0-beta.1&prerelease
SimpleExec
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.
By default, the command is echoed to standard error (stderr) for visibility.
Platform support: .NET Standard 2.1 and later.
Quick start
using static SimpleExec.Command;
Run("foo.exe", "arg1 arg2");
API
Run
Run("foo.exe");
Run("foo.exe", "arg1 arg2");
Run("foo.exe", new[] { "arg1", "arg2" });
await RunAsync("foo.exe");
await RunAsync("foo.exe", "arg1 arg2");
await RunAsync("foo.exe", new[] { "arg1", "arg2" });
Read
var (standardOutput1, standardError1) = await ReadAsync("foo.exe");
var (standardOutput2, standardError2) = await ReadAsync("foo.exe", "arg1 arg2");
var (standardOutput3, standardError3) = await ReadAsync("foo.exe", new[] { "arg1", "arg2" });
Other optional arguments
string workingDirectory = "",
bool noEcho = false,
string? echoPrefix = null,
Action<IDictionary<string, string?>>? configureEnvironment = null,
bool createNoWindow = false,
Encoding? encoding = null,
Func<int, bool>? handleExitCode = null,
string? standardInput = null,
CancellationToken cancellationToken = default,
Exceptions
If the command has a non-zero exit code, an ExitCodeException
is thrown with an int
ExitCode
property and a message in the form of:
$"The process exited with code {ExitCode}."
In the case of ReadAsync
, an ExitCodeReadException
is thrown, which inherits from ExitCodeException
, and has string
Out
and Error
properties, representing standard out (stdout) and standard error (stderr), and a message in the form of:
$@"The process exited with code {ExitCode}.
Standard Output:
{Out}
Standard Error:
{Error}"
Overriding default exit code handling
The throwing of exceptions for specific non-zero exit codes can be suppressed by passing a delegate to handleExitCode
which returns true
when it has handled the exit code and default exit code handling should be suppressed, and returns false
otherwise. For example:
Run("ROBOCOPY", "from to", handleExitCode: code => code < 8);
Note that it may be useful to record the exit code. For example:
var exitCode = 0;
Run("ROBOCOPY", "from to", handleExitCode: code => (exitCode = code) < 8);
// see https://ss64.com/nt/robocopy-exit.html
var oneOrMoreFilesCopied = exitCode & 1;
var extraFilesOrDirectoriesDetected = exitCode & 2;
var misMatchedFilesOrDirectoriesDetected = exitCode & 4;
<sub>Run by Gregor Cresnar from the Noun Project.</sub>
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- No dependencies.
NuGet packages (12)
Showing the top 5 NuGet packages that depend on SimpleExec:
Package | Downloads |
---|---|
Vertiq.Testing.XUnit
A highly modular framework for writing Blazor applications with a hassle-free, vertical-sliced architecture - Easy. Flexible. Focused. |
|
Xenial.Beer
Beer - Delicious dotnet build tools |
|
Quick.Build
A lot of utils for build. |
|
ZYC.AutomationTools
Package Description |
|
ILVerifier
A simple helper library to access provider-specific types when working with IDbConnection and friends. |
GitHub repositories (43)
Showing the top 5 popular GitHub repositories that depend on SimpleExec:
Repository | Stars |
---|---|
IdentityServer/IdentityServer4
OpenID Connect and OAuth 2.0 Framework for ASP.NET Core
|
|
xunit/xunit
xUnit.net is a free, open source, community-focused unit testing tool for .NET.
|
|
aaubry/YamlDotNet
YamlDotNet is a .NET library for YAML
|
|
adamhathcock/sharpcompress
SharpCompress is a fully managed C# library to deal with many compression types and formats.
|
|
AppMetrics/AppMetrics
App Metrics is an open-source and cross-platform .NET library used to record and report metrics within an application.
|
Version | Downloads | Last updated |
---|---|---|
12.0.0 | 289,218 | 1/15/2024 |
12.0.0-rc.1 | 417 | 12/25/2023 |
12.0.0-beta.1 | 255 | 12/24/2023 |
12.0.0-alpha.1 | 1,994 | 6/9/2023 |
11.0.0 | 463,754 | 8/21/2022 |
11.0.0-rc.1 | 616 | 7/22/2022 |
10.0.0 | 150,600 | 3/26/2022 |
10.0.0-beta.2 | 20,979 | 3/20/2022 |
10.0.0-beta.1 | 254 | 3/19/2022 |
9.1.0 | 16,381 | 3/19/2022 |
9.1.0-rc.1 | 230 | 3/13/2022 |
9.1.0-alpha.1 | 244 | 3/12/2022 |
9.0.0 | 4,522 | 3/12/2022 |
9.0.0-rc.4 | 1,233 | 2/26/2022 |
9.0.0-rc.3 | 9,547 | 12/30/2021 |
9.0.0-rc.2 | 283 | 12/23/2021 |
9.0.0-rc.1 | 194 | 12/23/2021 |
9.0.0-alpha.1 | 20,654 | 8/22/2021 |
8.0.0 | 596,666 | 7/5/2021 |
8.0.0-rc.1 | 476 | 6/26/2021 |
8.0.0-alpha.8 | 230 | 6/20/2021 |
8.0.0-alpha.7 | 201 | 6/19/2021 |
8.0.0-alpha.6 | 228 | 6/19/2021 |
8.0.0-alpha.5 | 224 | 6/19/2021 |
8.0.0-alpha.4 | 259 | 6/19/2021 |
8.0.0-alpha.3 | 945 | 6/13/2021 |
8.0.0-alpha.2 | 419 | 6/12/2021 |
8.0.0-alpha.1 | 261 | 6/12/2021 |
7.0.0 | 74,653 | 3/14/2021 |
7.0.0-alpha.2 | 333 | 3/13/2021 |
7.0.0-alpha.1 | 4,368 | 12/20/2020 |
6.4.0 | 70,945 | 12/20/2020 |
6.4.0-rc.1 | 1,565 | 12/5/2020 |
6.3.0 | 42,766 | 10/26/2020 |
6.2.0 | 278,794 | 12/21/2019 |
6.2.0-rc.1 | 1,340 | 12/15/2019 |
6.1.0 | 64,708 | 10/13/2019 |
6.1.0-rc.1 | 1,616 | 9/8/2019 |
6.1.0-beta.1 | 861 | 8/27/2019 |
6.0.0 | 54,579 | 7/13/2019 |
6.0.0-rc.1 | 427 | 6/27/2019 |
6.0.0-beta.1 | 670 | 6/12/2019 |
6.0.0-alpha.1 | 460 | 6/1/2019 |
5.0.1 | 20,096 | 2/10/2019 |
5.0.1-rc.1 | 613 | 2/10/2019 |
5.0.0 | 374 | 2/9/2019 |
5.0.0-beta.1 | 964 | 2/5/2019 |
5.0.0-alpha.2 | 352 | 2/4/2019 |
5.0.0-alpha.1 | 648 | 1/3/2019 |
4.2.0 | 17,976 | 12/8/2018 |
4.1.0 | 2,352 | 12/2/2018 |
4.0.0 | 401 | 11/27/2018 |
4.0.0-rc.1 | 435 | 11/26/2018 |
4.0.0-beta.1 | 730 | 11/20/2018 |
3.0.0 | 23,252 | 9/20/2018 |
2.3.0 | 2,394 | 8/25/2018 |
2.3.0-beta.1 | 478 | 8/11/2018 |
2.2.0 | 1,724 | 6/26/2018 |
2.1.0 | 1,543 | 5/20/2018 |
2.0.0 | 1,568 | 11/12/2017 |
1.0.0 | 3,827 | 11/5/2017 |