CliRunner 0.7.0
See the version list below for details.
dotnet add package CliRunner --version 0.7.0
NuGet\Install-Package CliRunner -Version 0.7.0
<PackageReference Include="CliRunner" Version="0.7.0" />
paket add CliRunner --version 0.7.0
#r "nuget: CliRunner, 0.7.0"
// Install CliRunner as a Cake Addin #addin nuget:?package=CliRunner&version=0.7.0 // Install CliRunner as a Cake Tool #tool nuget:?package=CliRunner&version=0.7.0
CliRunner
CliRunner is a library for interacting with Command Line Interfaces and wrapping around executables.
Features
- For .NET 8 and newer TFMs CliRunner is dependency free ^1
- Support for specific specializations such as running executables or commands via Windows Powershell or CMD on Windows ^2
- SourceLink support
Why use CliRunner over CliWrap?
- No hidden or additional licensing terms are required beyond the source code license
- No imported C code - This library is entirely written in C#
- No lock in regarding Piping support
- Uses .NET's built in
Process
type.
^1 - RuntimeExtensions dependency and Polyfill are only required for .NET Standard 2.0 and 2.1 users
^2 - Specialization library is distributed separately.
Support
This can be added to any .NET Standard 2.0, .NET Standard 2.1, .NET 8, or .NET 9 supported project.
Operating System | Support Status | Notes |
---|---|---|
Windows | Fully Supported ✅ | |
macOS | Fully Supported ✅ | |
Mac Catalyst | Fully Supported ✅ | |
Linux | Fully Supported ✅ | |
FreeBSD | Fully Supported ✅ | |
Android | Untested Platform ⚠️ | Support for this platform has not been tested but should theoretically work. |
IOS | Not Supported ❌ | Not supported due to Process.Start() not supporting IOS. ^3 |
tvOS | Not Supported ❌ | Not supported due to Process.Start() not supporting tvOS ^3 |
watchOS | Not Supported ❌ | Not supported due to Process.Start() not supporting watchOS ^4 |
Browser | Not Supported ❌ | Not supported due to not being a valid target Platform for executing programs. |
^3 - See the Process class documentation for more info.
^4 - Lack of watchOS support is implied by lack of IOS support since watchOS is based on IOS.
Note: This library has not been tested on Android or Tizen!
Installation
- Nuget or
dotnet add package CliRunner
Usage
CliRunner uses a fluent builder style of syntax to easily configure and run Commands.
The following example shows how to configure and build a Command that returns a BufferedCommandResult which contains redirected StandardOutput and StandardError.
using CliRunner.Commands;
using CliRunner.Commands.Buffered;
var result = await Cli.Run("Path/To/Exe")
.WithArguments(["arg1", "arg2"])
.WithWorkingDirectory("/Path/To/Directory")
.ExecuteBufferedAsync();
License
CliRunner is licensed under the MPL 2.0 license. If you modify any of CliRunner's files then the modified files must be licensed under the MPL 2.0 .
If you use CliRunner in your project please make an exact copy of the contents of CliRunner's LICENSE.txt file available either in your third party licenses txt file or as a separate txt file.
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 is compatible. 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. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. 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.0
- AlastairLundy.Extensions.Runtime (>= 2.1.0 && < 3.0.0)
- PolyFill (>= 7.11.0 && < 8.0.0)
-
.NETStandard 2.1
- AlastairLundy.Extensions.Runtime (>= 2.1.0 && < 3.0.0)
- PolyFill (>= 7.11.0 && < 8.0.0)
-
net8.0
- No dependencies.
-
net9.0
- No dependencies.
NuGet packages (2)
Showing the top 2 NuGet packages that depend on CliRunner:
Package | Downloads |
---|---|
PlatformKit
Cross-platform Operating System Detection, Operating System Version Detection, Apple Silicon Mac Detection, programmatic .NET Runtime ID Generation, and more. For a full list of features please visit: https://github.com/alastairlundy/PlatformKit/blob/main/docs/FeatureComparisonByPlatform.md |
|
CliRunner.Specializations
CliRunner Specializations is a library for providing Specializations of CliRunner's Commands. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0-alpha.3 | 0 | 2/10/2025 |
1.0.0-alpha.2 | 35 | 2/9/2025 |
1.0.0-alpha.1 | 13 | 2/6/2025 |
## Changes since 0.6.1
### Additions
* Added support for Android - Support for this platform is untested but is thereotically usable now.
### General Changes
* Replaced ProcessExtensions dependency with Polyfill library dependency on .NET Standard 2.0 and 2.1
* Clarified that IOS and tvOS are currently not supported due to .NET's Process class not supporting the ``Start()`` method on them.
* Fixed a typo in an Exception name
* Continued adding more xml doc comments