jhtools.LibProcess
0.1.0
dotnet add package jhtools.LibProcess --version 0.1.0
NuGet\Install-Package jhtools.LibProcess -Version 0.1.0
<PackageReference Include="jhtools.LibProcess" Version="0.1.0" />
paket add jhtools.LibProcess --version 0.1.0
#r "nuget: jhtools.LibProcess, 0.1.0"
// Install jhtools.LibProcess as a Cake Addin #addin nuget:?package=jhtools.LibProcess&version=0.1.0 // Install jhtools.LibProcess as a Cake Tool #tool nuget:?package=jhtools.LibProcess&version=0.1.0
LibProcess
Introduction
LibProcess is a library for starting processes in C#.
WARNING: This library is still in development and is not yet ready for production use.
License
LibProcess is licensed under the MIT license. See the LICENSE file for more information.
Installation
LibProcess is available as a NuGet package. To install LibProcess, run the following command in the Package Manager Console:
PM> Install-Package jhtools.LibProcess
Dotnet Support
LibProcess is compatible with .NET 6.0 and later.
Arguments
In general, arguments can be passed to a process in two ways:
- As a string enumerable
- As a string
If you pass a string enumerable, the arguments will be escaped and joined with spaces. If you pass a string, the arguments will not be escaped or joined.
In particular, if you pass a string, you are responsible for escaping and joining the arguments yourself. In many cases that may be more convenient, but it is also more error-prone.
Logging
The ProcessHelper
class has a parameter logger
that can be used to log the output of the process and some additional information.
You can pass a null if you don't want to log anything.
ProcessHelper
The ProcessHelper
class is the main class of the library. It provides methods for starting processes and waiting for them to exit.
StartProcessAsync
async Task<int> StartProcessAsync(
string fileName,
IEnumerable<string> arguments = null,
string? workingDirectory = null,
Action<string>? outputDataReceived = null,
Action<string>? errorDataReceived = null,
CancellationToken? cancellationToken = null)
Starts a process and waits for it to exit. The process is started asynchronously. The method returns the exit code of the process.
The workingDirectory
parameter can be used to specify the working directory of the process. If it is null
, the working directory of the current process is used.
The outputDataReceived
and errorDataReceived
parameters can be used to specify callbacks that are called when the process writes to stdout
or stderr
.
There is an overload of this method that takes a string
instead of an IEnumerable<string>
for the arguments
parameter. In that case, the arguments are not escaped or joined.
There is also an overload with this signature:
Task<int> StartProcessAsync(
this IProcessHelper processHelper,
CancellationToken ct,
string fileName,
string? arguments = null,
string? workingDirectory = null)
This overload is useful if you want to use the logging functionality of the ProcessHelper
class but need a CancellationToken
.
StartProcessWithResultAsync
public static async Task<(int exitCode, string output, string error)> StartProcessWithResultAsync(
string fileName,
IEnumerable<string> arguments,
string? workingDirectory = null,
CancellationToken? ct = null)
Starts a process and waits for it to exit. The process is started asynchronously. The method returns the exit code of the process, the output of the process and the error output of the process.
There are also overloads of this method that take a string
instead of an IEnumerable<string>
for the arguments
parameter. In that case, the arguments are not escaped or joined.
There is also an overload with this signature:
Task<(int exitCode, string output, string error)> StartProcessWithResultAsync(
CancellationToken ct,
string fileName,
string? arguments = null,
string? workingDirectory = null)
This overload is useful if you want to use the logging functionality of the ProcessHelper
class but need a CancellationToken
.
Unit Test Support
The functionality is provided via the interface IProcessHelper
. This interface is implemented by the class ProcessHelper
.
This allows you to write unit tests that use the ProcessHelper
class by creating a mock of the IProcessHelper
interface.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. 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. |
-
net6.0
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
0.1.0 | 238 | 9/8/2022 |