Gapotchenko.FX.Diagnostics.CommandLine
2022.2.5
Prefix Reserved
See the version list below for details.
dotnet add package Gapotchenko.FX.Diagnostics.CommandLine --version 2022.2.5
NuGet\Install-Package Gapotchenko.FX.Diagnostics.CommandLine -Version 2022.2.5
<PackageReference Include="Gapotchenko.FX.Diagnostics.CommandLine" Version="2022.2.5" />
paket add Gapotchenko.FX.Diagnostics.CommandLine --version 2022.2.5
#r "nuget: Gapotchenko.FX.Diagnostics.CommandLine, 2022.2.5"
// Install Gapotchenko.FX.Diagnostics.CommandLine as a Cake Addin #addin nuget:?package=Gapotchenko.FX.Diagnostics.CommandLine&version=2022.2.5 // Install Gapotchenko.FX.Diagnostics.CommandLine as a Cake Tool #tool nuget:?package=Gapotchenko.FX.Diagnostics.CommandLine&version=2022.2.5
Overview
The module provides primitives for command line manipulation.
CommandLineBuilder
CommandLineBuilder
class from Gapotchenko.FX.Diagnostics.CommandLine
module allows to dynamically build a command line on the fly.
It provides the built-in support for characters than need escaping.
Semantically CommandLineBuilder
is similar to StringBuilder
class:
using Gapotchenko.FX.Diagnostics;
var clb = new CommandLineBuilder();
clb.AppendParameter("/b");
clb.AppendParameter(@"C:\Temp\Test 1.txt");
clb.AppendParameter(@"C:\Temp\Test 2.txt");
Console.WriteLine(clb.ToString());
The code above produces the following output:
/b "C:\Temp\Test 1.txt" "C:\Temp\Test 2.txt"
Note how some command line parameters were automatically quoted because they contained whitespace characters.
CommandLineBuilder
supports a fluent interface just like conventional StringBuilder
,
so the code can be rewritten as:
var clb = new CommandLineBuilder()
.AppendParameter("/b")
.AppendParameter(@"C:\Temp\Test 1.txt")
.AppendParameter(@"C:\Temp\Test 2.txt");
Console.WriteLine(clb.ToString());
The resulting command line can be used in various places, most notably for starting a new process:
using System.Diagnostics;
…
Process.Start("copy", clb.ToString());
CommandLine
CommandLine
static class provides operations for command line manipulation.
Build
CommandLine.Build
method allows to quickly build a command line string from a specified list of arguments.
Basically, this is a shortcut to CommandLineBuilder
class in a handy functional form:
string s = CommandLine.Build("/b", @"C:\Temp\Test 1.txt", @"C:\Temp\Test 2.txt");
Such a form is very useful in something like this:
Process.Start(
"cmd",
CommandLine.Build(
"/C", "copy",
"/b", @"C:\Temp\Test 1.txt", @"C:\Temp\Test 2.txt"));
Another cool thing: if you want to exclude some argument from a command line then you can just make it null
:
string mode = null;
// 'mode' can be assigned to a non-null value if there is a need to specify it.
string s = CommandLine.Build(mode, @"C:\Temp\Test 1.txt", @"C:\Temp\Test 2.txt");
Console.WriteLine(s);
The code above produces the following output:
"C:\Temp\Test 1.txt" "C:\Temp\Test 2.txt"
This is a neat departure from a traditional .NET convention where it always throws ArgumentNullException
.
Instead, Gapotchenko.FX uses a slightly different philosophy.
It does the best job possible under existing conditions by following common-sense expectations of a user.
Split
CommandLine.Split
provides the opposite operation to CommandLine.Build
.
It allows to split a command line string into a list of arguments using the rules of a host operating system:
using Gapotchenko.FX.Diagnostics;
string s = "/b \"C:\\Temp\\Test 1.txt\" \"C:\\Temp\\Test 2.txt\"";
foreach (string arg in CommandLine.Split(s))
Console.WriteLine(arg);
The code above produces the following output:
/b
C:\Temp\Test 1.txt
C:\Temp\Test 2.txt
Commonly Used Types
- Gapotchenko.FX.Diagnostics.CommandLine
- Gapotchenko.FX.Diagnostics.CommandLineBuilder
Other Modules
Let's continue with a look at some other modules provided by Gapotchenko.FX:
- Gapotchenko.FX
- Gapotchenko.FX.AppModel.Information
- Gapotchenko.FX.Collections
- Gapotchenko.FX.Console
- Gapotchenko.FX.Data
- Gapotchenko.FX.Diagnostics
- Gapotchenko.FX.IO
- Gapotchenko.FX.Linq
- Gapotchenko.FX.Math
- Gapotchenko.FX.Memory
- Gapotchenko.FX.Security.Cryptography
- Gapotchenko.FX.Text
- Gapotchenko.FX.Threading
Or look at the full list of modules.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. 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 is compatible. 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 | netcoreapp2.0 is compatible. netcoreapp2.1 is compatible. netcoreapp2.2 was computed. netcoreapp3.0 is compatible. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net46 is compatible. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 is compatible. net472 is compatible. 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. |
-
.NETCoreApp 2.0
- Gapotchenko.FX (>= 2022.2.5)
- Gapotchenko.FX.Text (>= 2022.2.5)
-
.NETCoreApp 2.1
- Gapotchenko.FX (>= 2022.2.5)
- Gapotchenko.FX.Text (>= 2022.2.5)
-
.NETCoreApp 3.0
- Gapotchenko.FX (>= 2022.2.5)
- Gapotchenko.FX.Text (>= 2022.2.5)
-
.NETFramework 4.6
- Gapotchenko.FX (>= 2022.2.5)
- Gapotchenko.FX.Text (>= 2022.2.5)
-
.NETFramework 4.7.1
- Gapotchenko.FX (>= 2022.2.5)
- Gapotchenko.FX.Text (>= 2022.2.5)
-
.NETFramework 4.7.2
- Gapotchenko.FX (>= 2022.2.5)
- Gapotchenko.FX.Text (>= 2022.2.5)
-
.NETStandard 2.0
- Gapotchenko.FX (>= 2022.2.5)
- Gapotchenko.FX.Text (>= 2022.2.5)
-
.NETStandard 2.1
- Gapotchenko.FX (>= 2022.2.5)
- Gapotchenko.FX.Text (>= 2022.2.5)
-
net5.0
- Gapotchenko.FX (>= 2022.2.5)
- Gapotchenko.FX.Text (>= 2022.2.5)
-
net6.0
- Gapotchenko.FX (>= 2022.2.5)
- Gapotchenko.FX.Text (>= 2022.2.5)
-
net7.0
- Gapotchenko.FX (>= 2022.2.5)
- Gapotchenko.FX.Text (>= 2022.2.5)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on Gapotchenko.FX.Diagnostics.CommandLine:
Package | Downloads |
---|---|
Gapotchenko.FX.Diagnostics.Process
Provides extended functionality for process manipulation. |
|
Gapotchenko.FX.Diagnostics.WebBrowser
Provides high-level integration with OS web browser. |
|
Gapotchenko.FX.Profiles.Core
Represents the Core profile of Gapotchenko.FX. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2024.1.3 | 492 | 11/10/2024 |
2022.2.7 | 39,214 | 5/1/2022 |
2022.2.5 | 1,884 | 5/1/2022 |
2022.1.4 | 990 | 4/6/2022 |
2021.2.21 | 1,087 | 1/21/2022 |
2021.2.20 | 968 | 1/17/2022 |
2021.1.5 | 768 | 7/6/2021 |
2020.2.2-beta | 503 | 11/21/2020 |
2020.1.15 | 909 | 11/5/2020 |
2020.1.9-beta | 563 | 7/14/2020 |
2020.1.8-beta | 525 | 7/14/2020 |
2020.1.7-beta | 588 | 7/14/2020 |
2020.1.1-beta | 639 | 2/11/2020 |
2019.3.7 | 934 | 11/4/2019 |
2019.2.20 | 895 | 8/13/2019 |
2019.1.151 | 997 | 3/30/2019 |