CommandLineParserInjector 1.0.0-alpha0006
This is a prerelease version of CommandLineParserInjector.
There is a newer prerelease version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package CommandLineParserInjector --version 1.0.0-alpha0006
NuGet\Install-Package CommandLineParserInjector -Version 1.0.0-alpha0006
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="CommandLineParserInjector" Version="1.0.0-alpha0006" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add CommandLineParserInjector --version 1.0.0-alpha0006
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: CommandLineParserInjector, 1.0.0-alpha0006"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install CommandLineParserInjector as a Cake Addin #addin nuget:?package=CommandLineParserInjector&version=1.0.0-alpha0006&prerelease // Install CommandLineParserInjector as a Cake Tool #tool nuget:?package=CommandLineParserInjector&version=1.0.0-alpha0006&prerelease
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
CommandLineParserInjector
This library makes it easy to write C# command line apps that use dependency injection. To use it:
- Add a dependency on
CommandLineParserInjector
- Add a dependency on
Microsoft.Extensions.Hosting
- Put the following code in your
Program.cs
file:
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
services.AddCommandLineOptions<SimpleCommandLineOptions, SimpleCommandLineHandler>(args);
services.AddSingleton(test.Object);
})
.Build();
var runner = host.Services.GetService<ICommandLineRunner>();
runner.Should().NotBeNull();
await runner.RunAsync();
public class SimpleCommandLineOptions
{
[Option('p', "path", HelpText = "A simple file path string property", Required = true)]
public string FilePath { get; set; }
}
public class SimpleCommandLineHandler : ICommandLineHandler<SimpleCommandLineOptions>
{
public async Task ExecuteAsync(SimpleCommandLineOptions verb)
{
// Command line processing goes here
}
}
If you want your command line program to support multiple verbs, you can do this:
var args = new[]{"verb1", "-i", "test.txt"};
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
services.AddCommandLineArguments(args);
services.AddCommandLineVerb<CommandLineVerb1, CommandLineHandler1>();
services.AddCommandLineVerb<CommandLineVerb2, CommandLineHandler2>();
services.AddSingleton(test.Object);
})
.Build();
var runner = host.Services.GetRequiredService<ICommandLineRunner>();
await runner.RunAsync();
[Verb("verb1")]
public class CommandLineVerb1
{
[Option('i', "input", HelpText = "A simple string property", Required = true)]
public string InputPath { get; set; }
public override string FilePath => InputPath;
}
[Verb("verb2")]
public class CommandLineVerb2
{
[Option('o', "output", HelpText = "A simple string property", Required = true)]
public string OutputPath { get; set; }
public override string FilePath => OutputPath;
}
public class CommandLineHandler1 : ICommandLineHandler<CommandLineVerb1>
{
public Task ExecuteAsync(CommandLineVerb1 verb)
{
// TODO - put code to process a verb1 command here
return Task.CompletedTask;
}
}
public class CommandLineHandler2 : ICommandLineHandler<CommandLineVerb2>
{
public Task ExecuteAsync(CommandLineVerb2 verb)
{
// TODO - put code to process a verb2 command here
return Task.CompletedTask;
}
}
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 | 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 was computed. |
.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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- CommandLineParser (>= 2.9.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0.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.