From 6c125c4d256391b0f08af4ae0a3584df3a4ef84c Mon Sep 17 00:00:00 2001 From: yakovypg Date: Wed, 10 Jun 2026 20:21:09 +0300 Subject: [PATCH 1/4] Fix creation of default value presenter --- Core/NetArgumentParser/Options/ValueOption.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Core/NetArgumentParser/Options/ValueOption.cs b/Core/NetArgumentParser/Options/ValueOption.cs index 77194c4..836cfeb 100644 --- a/Core/NetArgumentParser/Options/ValueOption.cs +++ b/Core/NetArgumentParser/Options/ValueOption.cs @@ -185,6 +185,10 @@ public void AddDefaultValueToDescription( { defaultValueString = nullPresenter; } + else if (DefaultValue.Value is string defaultValueText) + { + defaultValueString = defaultValueText; + } else if (DefaultValue.Value is IEnumerable defaultValueEnumerable) { defaultValueString = ExtendedString.JoinWithExpand( From 9985788e362fa85d30c79b291b1fd4ee28399ff1 Mon Sep 17 00:00:00 2001 From: yakovypg Date: Wed, 10 Jun 2026 20:22:57 +0300 Subject: [PATCH 2/4] Use `not` instead of `n't` --- CONTRIBUTING.md | 6 +++--- Core/NetArgumentParser/ArgumentParser.cs | 2 +- .../Attributes/Extensions/TypeExtensions.cs | 2 +- .../NetArgumentParser/ExtendedArgumentException.cs | 2 +- .../Generators/UnsupportedOptionConfigException.cs | 2 +- .../Generators/UnsupportedParserConfigException.cs | 2 +- .../Options/DefaultValueNotSpecifiedException.cs | 2 +- .../OptionValueNotSatisfyRestrictionException.cs | 2 +- Core/NetArgumentParser/Options/ValueOption.cs | 2 +- Documentation/AdditionalFeatures.md | 10 +++++----- Documentation/CustomConverters.md | 2 +- Documentation/OptionalArguments.md | 10 +++++----- Documentation/OptionalArgumentsConfig.md | 12 ++++++------ Documentation/ParserGenerationUsingAttributes.md | 14 +++++++------- Documentation/PrintingHelp.md | 2 +- Documentation/Subcommands.md | 2 +- .../Program.cs | 2 +- 17 files changed, 38 insertions(+), 38 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5d86ba2..b8f8596 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,7 +3,7 @@ Thank you for taking the time to contribute! All types of contributions are welc When contributing to this project, please first discuss the change you wish to make via [Discussions](https://github.com/yakovypg/NetArgumentParser/discussions) or [Issues](https://github.com/yakovypg/NetArgumentParser/issues) with the project owners. In addition, please follow code of conduct in all your interactions with the project. -> If you don't have time to contribute, you may want to consider the following easy ways to support the project: +> If you do not have time to contribute, you may want to consider the following easy ways to support the project: > - Star the project. > - Refer this project in your project's files. > - Write about the project on social media. @@ -17,10 +17,10 @@ We actively welcome your pull requests. Follow these steps: 4. Create new tests if necessary and ensure all test passes locally. 5. Update documentation if necessary. 6. Increase the project version numbers. -7. Mark your Pull Request ready for review. +7. Mark your Pull Request ready for review. ## Discussions -If you don't understand something and need clarification, you can always ask us via [Discussions](https://github.com/yakovypg/NetArgumentParser/discussions) or [Issues](https://github.com/yakovypg/NetArgumentParser/issues). Before you ask a question, it is best to read available [documantation](DOCUMENTATION.md) and search for existing [Discussions](https://github.com/yakovypg/NetArgumentParser/discussions) and [Issues](https://github.com/yakovypg/NetArgumentParser/issues) that might help you. +If you do not understand something and need clarification, you can always ask us via [Discussions](https://github.com/yakovypg/NetArgumentParser/discussions) or [Issues](https://github.com/yakovypg/NetArgumentParser/issues). Before you ask a question, it is best to read available [documantation](DOCUMENTATION.md) and search for existing [Discussions](https://github.com/yakovypg/NetArgumentParser/discussions) and [Issues](https://github.com/yakovypg/NetArgumentParser/issues) that might help you. If you are going to ask a question or bring attention to a problem, we recommend the following: * Open a Discission or an Issue. diff --git a/Core/NetArgumentParser/ArgumentParser.cs b/Core/NetArgumentParser/ArgumentParser.cs index 78780d2..a1ac714 100644 --- a/Core/NetArgumentParser/ArgumentParser.cs +++ b/Core/NetArgumentParser/ArgumentParser.cs @@ -247,7 +247,7 @@ protected virtual bool HandleFinalOptions( { if (!isFinalOptionHandled) { - // Don't handle subcommand here + // Do not handle subcommand here // e.Subcommand.Handle(); handledSubcommands.Add(e.Subcommand); } diff --git a/Core/NetArgumentParser/Attributes/Extensions/TypeExtensions.cs b/Core/NetArgumentParser/Attributes/Extensions/TypeExtensions.cs index 891c969..518c359 100644 --- a/Core/NetArgumentParser/Attributes/Extensions/TypeExtensions.cs +++ b/Core/NetArgumentParser/Attributes/Extensions/TypeExtensions.cs @@ -30,7 +30,7 @@ internal static object GetValueTypeDefaultValue(this Type type) if (instance is null) { - string message = $"{type.FullName} doesn't support creation of its instance."; + string message = $"{type.FullName} does not support creation of its instance."; throw new ArgumentException(message, nameof(type)); } diff --git a/Core/NetArgumentParser/ExtendedArgumentException.cs b/Core/NetArgumentParser/ExtendedArgumentException.cs index 5d27e2b..a43612b 100644 --- a/Core/NetArgumentParser/ExtendedArgumentException.cs +++ b/Core/NetArgumentParser/ExtendedArgumentException.cs @@ -81,7 +81,7 @@ internal static void ThrowIfNullOrWhiteSpace(T? argument, string? paramName = throw new ArgumentNullException(paramName); if (argument is not string str) - throw new NotSupportedException($"Type {typeof(T)} isn't supported."); + throw new NotSupportedException($"Type {typeof(T)} is not supported."); if (string.IsNullOrWhiteSpace(str)) { diff --git a/Core/NetArgumentParser/Generators/UnsupportedOptionConfigException.cs b/Core/NetArgumentParser/Generators/UnsupportedOptionConfigException.cs index c90275a..8bf0f8a 100644 --- a/Core/NetArgumentParser/Generators/UnsupportedOptionConfigException.cs +++ b/Core/NetArgumentParser/Generators/UnsupportedOptionConfigException.cs @@ -61,6 +61,6 @@ private static string GetDefaultMessage(PropertyInfo? optionConfig = null) ? $" '{optionConfig.Name}'" : string.Empty; - return $"Option configuration{optionConfigPresenter} isn't supported."; + return $"Option configuration{optionConfigPresenter} is not supported."; } } diff --git a/Core/NetArgumentParser/Generators/UnsupportedParserConfigException.cs b/Core/NetArgumentParser/Generators/UnsupportedParserConfigException.cs index f3ed93a..0252354 100644 --- a/Core/NetArgumentParser/Generators/UnsupportedParserConfigException.cs +++ b/Core/NetArgumentParser/Generators/UnsupportedParserConfigException.cs @@ -64,7 +64,7 @@ private static string GetDefaultMessage(object? config = null) ? $" '{configObjectName}'" : string.Empty; - string message = $"Config{configObjectNamePresenter} isn't supported."; + string message = $"Config{configObjectNamePresenter} is not supported."; return !string.IsNullOrEmpty(necessaryAttributeName) ? $"{message} It must be marked by {necessaryAttributeName} attribute." diff --git a/Core/NetArgumentParser/Options/DefaultValueNotSpecifiedException.cs b/Core/NetArgumentParser/Options/DefaultValueNotSpecifiedException.cs index 64b86d0..3752cc9 100644 --- a/Core/NetArgumentParser/Options/DefaultValueNotSpecifiedException.cs +++ b/Core/NetArgumentParser/Options/DefaultValueNotSpecifiedException.cs @@ -60,6 +60,6 @@ private static string GetDefaultMessage(ICommonOption? option = null) ? $" '{option}'" : string.Empty; - return $"Default value isn't specified for option{optionPresenter}."; + return $"Default value is not specified for option{optionPresenter}."; } } diff --git a/Core/NetArgumentParser/Options/OptionValueNotSatisfyRestrictionException.cs b/Core/NetArgumentParser/Options/OptionValueNotSatisfyRestrictionException.cs index 5106e9e..f26e8ac 100644 --- a/Core/NetArgumentParser/Options/OptionValueNotSatisfyRestrictionException.cs +++ b/Core/NetArgumentParser/Options/OptionValueNotSatisfyRestrictionException.cs @@ -63,6 +63,6 @@ private static string GetDefaultMessage(string[]? optionValue = null) ? $" '{string.Join(" ", optionValue)}'" : string.Empty; - return $"Option value{optionValuePresenter} doesn't satisfy the restriction."; + return $"Option value{optionValuePresenter} does not satisfy the restriction."; } } diff --git a/Core/NetArgumentParser/Options/ValueOption.cs b/Core/NetArgumentParser/Options/ValueOption.cs index 836cfeb..c9dba5b 100644 --- a/Core/NetArgumentParser/Options/ValueOption.cs +++ b/Core/NetArgumentParser/Options/ValueOption.cs @@ -90,7 +90,7 @@ protected ValueOption( && _choices.Count > 0 && !_choices.Contains(defaultValue.Value)) { - throw new ArgumentException("Choices don't contain default value.", nameof(defaultValue)); + throw new ArgumentException("Choices do not contain default value.", nameof(defaultValue)); } if (valueRestriction is not null) diff --git a/Documentation/AdditionalFeatures.md b/Documentation/AdditionalFeatures.md index de138d3..27cb59d 100644 --- a/Documentation/AdditionalFeatures.md +++ b/Documentation/AdditionalFeatures.md @@ -34,7 +34,7 @@ parser.Parse(new string[] { "--offset", "-45", "--angle", "-1e-1" }); ``` ## Use `option=value` Syntax -**NetArgumentParser** supports `option=value` syntax. Please note that this syntax doesn't combine with the ability to capture multiple values. +**NetArgumentParser** supports `option=value` syntax. Please note that this syntax does not combine with the ability to capture multiple values. ```cs int? angle = null; @@ -62,7 +62,7 @@ parser.ParseKnownArguments( ``` ## Parse Known Arguments -Sometimes a program may need to parse only part of the command-line arguments and pass the remaining arguments to another program. In this case, the `ParseKnownArguments` function may be useful. It works in much the same way as the `Parse` function, except that it doesn't throw an exception if there are additional arguments. Instead, it allows you to get a list of the extra arguments. +Sometimes a program may need to parse only part of the command-line arguments and pass the remaining arguments to another program. In this case, the `ParseKnownArguments` function may be useful. It works in much the same way as the `Parse` function, except that it does not throw an exception if there are additional arguments. Instead, it allows you to get a list of the extra arguments. ```cs bool verbose = false; @@ -79,7 +79,7 @@ parser.ParseKnownArguments(new string[] { "-v", "10", "-a" }, out List e ``` ## Parse Arguments Multiple Times -You can parse arguments multiple times using a single instance of `ArgumentParser`. When you call the `Parse()` or `ParseKnownArguments()` methods, it automatically invokes the `ResetOptionsHandledState()` and `ResetSubcommandsHandledState()` methods, so you don't need to call them manually. +You can parse arguments multiple times using a single instance of `ArgumentParser`. When you call the `Parse()` or `ParseKnownArguments()` methods, it automatically invokes the `ResetOptionsHandledState()` and `ResetSubcommandsHandledState()` methods, so you do not need to call them manually. ```cs int angle = 0; @@ -265,9 +265,9 @@ widthOption.AddBeforeParseChoicesToDescription( Console.WriteLine(widthOption.Description); ``` -Note that you can add only one type of choices to description. So you can't call `AddChoicesToDescription()` method after after you have already called method `AddBeforeParseChoicesToDescription()`, or vice versa. +Note that you can add only one type of choices to description. So you ca not call `AddChoicesToDescription()` method after after you have already called method `AddBeforeParseChoicesToDescription()`, or vice versa. -All value options implement interface `IValueOptionDescriptionDesigner`, so if you don't want to manually call method `AddChoicesToDescription()` or `AddBeforeParseChoicesToDescription()` for each option, you can get all options from parser using `GetAllOptions()` method, filter them and then use a loop. +All value options implement interface `IValueOptionDescriptionDesigner`, so if you do not want to manually call method `AddChoicesToDescription()` or `AddBeforeParseChoicesToDescription()` for each option, you can get all options from parser using `GetAllOptions()` method, filter them and then use a loop. ```cs var angleOption = new ValueOption( diff --git a/Documentation/CustomConverters.md b/Documentation/CustomConverters.md index 92056d2..ddf5c06 100644 --- a/Documentation/CustomConverters.md +++ b/Documentation/CustomConverters.md @@ -191,7 +191,7 @@ record PageFontSize(int PageNumber, int FontSize) All rules regarding the visibility level, adding converters, and using them in subcommands, as well as others, are the same as for the value converter. ### Enum Value Converter -To create an enum value converter for type T, you don't need any special functions. You only need to pass a flag indicating whether the converter should ignore case in the input string. +To create an enum value converter for type T, you do not need any special functions. You only need to pass a flag indicating whether the converter should ignore case in the input string. Here is an example of creating enum value converter and using it in the parser: diff --git a/Documentation/OptionalArguments.md b/Documentation/OptionalArguments.md index 6bbe197..a44ccd1 100644 --- a/Documentation/OptionalArguments.md +++ b/Documentation/OptionalArguments.md @@ -36,7 +36,7 @@ parser.Parse(new string[] { "--verbose" }); ### Help Option **Help option** is a special final flag option whose default action is to print the help and exit the program. -This option is automatically added to the option set, so you don't have to add it explicitly: +This option is automatically added to the option set, so you do not have to add it explicitly: ```cs var parser = new ArgumentParser(); @@ -75,7 +75,7 @@ parser.Parse(new string[] { "--help" }); ### Version Option **Version option** is a special final flag option whose default action is to print the version information and exit the program. -This option is automatically added to the option set, so you don't have to add it explicitly: +This option is automatically added to the option set, so you do not have to add it explicitly: ```cs var parser = new ArgumentParser(); @@ -131,7 +131,7 @@ parser.Parse(new string[] { "-VVVV", "-V" }); ``` ## Value Options -**Value options** are options with value. The value type can be anything. However, for types that don't have a default converter, you will need to add a [custom converter](CustomConverters.md). +**Value options** are options with value. The value type can be anything. However, for types that do not have a default converter, you will need to add a [custom converter](CustomConverters.md). Here is an example of creating value option and using it in the parser: @@ -150,7 +150,7 @@ parser.Parse(new string[] { "--angle", "45" }); ``` ### Multiple Value Options -**Multiple value options** are options whose value is a list. The single value type can be anything. However, for types that don't have a default converter, you will need to add a [custom converter](CustomConverters.md). +**Multiple value options** are options whose value is a list. The single value type can be anything. However, for types that do not have a default converter, you will need to add a [custom converter](CustomConverters.md). Here is an example of creating multiple value option and using it in the parser: @@ -191,7 +191,7 @@ parser.Parse(new string[] { "--split-option", "TrimEntries" }); ``` ## Final Options -**Final options** are options that are handled before all others. After the final option is handled, the remaining options (including final ones) aren't handled. Examples of final options are help option and version option. +**Final options** are options that are handled before all others. After the final option is handled, the remaining options (including final ones) are not handled. Examples of final options are help option and version option. Note that options of any type can be final. To make an option final, you need to set the corresponding value to the `isFinal` parameter of the option constructor. diff --git a/Documentation/OptionalArgumentsConfig.md b/Documentation/OptionalArgumentsConfig.md index 924d28a..0c881a3 100644 --- a/Documentation/OptionalArgumentsConfig.md +++ b/Documentation/OptionalArgumentsConfig.md @@ -41,7 +41,7 @@ var parser = new ArgumentParser() **Double minus options** are options like `--version`. Support of double minus options is enabled by default and cannot be disabled. ### Slash Options -**Slash options** are options like `/v` or `/version`. Support of slash options isn't enabled by default. You can enable it the same way as in the following example: +**Slash options** are options like `/v` or `/version`. Support of slash options is not enabled by default. You can enable it the same way as in the following example: ```cs var parser = new ArgumentParser() @@ -50,7 +50,7 @@ var parser = new ArgumentParser() }; ``` -Please note that you won't be able to pass Linux-style absolute paths (e.g. `/home/user/Downloads/file.txt`) as arguments after doing this, as they will be handled as options. The same applies to other arguments starting with a slash. +Please note that you wo not be able to pass Linux-style absolute paths (e.g. `/home/user/Downloads/file.txt`) as arguments after doing this, as they will be handled as options. The same applies to other arguments starting with a slash. ### Custom Option View You can change assignmnet character, slash option prefix and short named (short minus) option prefix. To do this, you need to specify a specific value in the corresponding property of class `SpecialCharacters`. You can do it the same way as in the following example: @@ -69,7 +69,7 @@ This configuration will be applied to all existing parsers. **NetArgumentParser** supports many configurations for options. ### Names and Description -You can specify long name, short name and description of the option. Please note that you can omit (pass empty string to do it) a long name or a short name, but you can't skip both of them. +You can specify long name, short name and description of the option. Please note that you can omit (pass empty string to do it) a long name or a short name, but you ca not skip both of them. ```cs var verboseOption = new FlagOption("verbose", "v", "be verbose"); @@ -177,7 +177,7 @@ var firstNameOption = new ValueOption( ``` ### Default Value -You can specify a default value for the option. In this case, if the input argument list doesn't contain a matching argument, the option will be assigned its default value. Default value is only available for value options. +You can specify a default value for the option. In this case, if the input argument list does not contain a matching argument, the option will be assigned its default value. Default value is only available for value options. ```cs var option = new ValueOption("angle", "a", @@ -202,7 +202,7 @@ var enumValueOption = new EnumValueOption("options", "o", valueRestriction: new OptionValueRestriction(t => t != StringSplitOptions.None)); ``` -You can also specify a message to be shown if the value doesn't satisfy the restriction: +You can also specify a message to be shown if the value does not satisfy the restriction: ```cs var restriction = new OptionValueRestriction(t => t > 0, "angle must be greater than zero"); @@ -213,7 +213,7 @@ var valueOption = new ValueOption("angle", "a", ``` ### Required Options -You can indicate that the option is required. In this case, if the input argument list doesn't contain a matching argument, an exception will be thrown. +You can indicate that the option is required. In this case, if the input argument list does not contain a matching argument, an exception will be thrown. ```cs var option = new ValueOption("angle", "a", diff --git a/Documentation/ParserGenerationUsingAttributes.md b/Documentation/ParserGenerationUsingAttributes.md index b68dadc..0e763f5 100644 --- a/Documentation/ParserGenerationUsingAttributes.md +++ b/Documentation/ParserGenerationUsingAttributes.md @@ -165,7 +165,7 @@ internal class CustomParserConfig internal record Point(double X, double Y, double Z); ``` -Note that attributes allow you to add default value, choices and before parse choices to the option description (if the corresponding option supports it) using `addDefaultValueToDescription`, `addChoicesToDescription`, and `addBeforeParseChoicesToDescription` parameters, so you don't need to find the generated options to do this. +Note that attributes allow you to add default value, choices and before parse choices to the option description (if the corresponding option supports it) using `addDefaultValueToDescription`, `addChoicesToDescription`, and `addBeforeParseChoicesToDescription` parameters, so you do not need to find the generated options to do this. #### Add value restriction You can add a common value restriction using `valueRestriction` parameter. This is specified through a string that will be converted into an actual restriction by a special parser. The format of this string is as follows: @@ -177,7 +177,7 @@ logical_operator predicateK_name parameter1 ... parameterM ?value_not_satisfy_restriction_message ``` -In other words, a string consists of one or more predicates, each separated by a newline character `\n`. Following the predicate name, its parameters are listed. A logical connective (`AND` or `OR`) may precede the predicate name; if omitted, it defaults to `AND`. A line that begins with the `?` character specifies a message to be displayed if the option value doesn't satisfy the restriction. However, this message can be omitted. +In other words, a string consists of one or more predicates, each separated by a newline character `\n`. Following the predicate name, its parameters are listed. A logical connective (`AND` or `OR`) may precede the predicate name; if omitted, it defaults to `AND`. A line that begins with the `?` character specifies a message to be displayed if the option value does not satisfy the restriction. However, this message can be omitted. In addition, you can negate predicate. To do this, place `!` before the predicate name. @@ -201,8 +201,8 @@ The following predicates are available: 15. `directoryexists` (`directory`): takes no parameters. The option value must be a string representing the path to an existing directory. 16. `fileexists`: takes no parameters. The option value must be a string representing the path to an existing file. 17. `maxfilesize` (`maxsize`): takes a single parameter. The option value must be a string representing the path to a file whose size is less than or equal to this parameter (in bytes). -18. `extension` (`ext`): takes one or more parameters. The option value must be a string representing the path to a file whose extension matches one of the specified parameters. The dot in the file extension is optional, and its case (uppercase or lowercase) doesn't matter. -19. `file`: takes zero or more parameters. The option value must be a string representing the path to an existing file whose extension matches one of the specified parameters. If no parameters are provided, only the file's existence is checked. The dot in the file extension is optional, and its case (uppercase or lowercase) doesn't matter. +18. `extension` (`ext`): takes one or more parameters. The option value must be a string representing the path to a file whose extension matches one of the specified parameters. The dot in the file extension is optional, and its case (uppercase or lowercase) does not matter. +19. `file`: takes zero or more parameters. The option value must be a string representing the path to an existing file whose extension matches one of the specified parameters. If no parameters are provided, only the file's existence is checked. The dot in the file extension is optional, and its case (uppercase or lowercase) does not matter. Examples of simple restrictions are provided below: 1. `== 5`: the option value must be equal to 5. @@ -226,8 +226,8 @@ Examples of simple restrictions are provided below: 19. `file mp4 mkv`: the option value must be a string representing the path to an existing file whose extension matches either `mp4` or `mkv`. Examples of restrictions with negation are provided below: -1. `!oneof 1 3 6`: the option value mustn't be one of: 1, 3 or 6. -2. `!nullorempty`: the option value mustn't be null or an empty string. +1. `!oneof 1 3 6`: the option value must not be one of: 1, 3 or 6. +2. `!nullorempty`: the option value must not be null or an empty string. Examples of complex restrictions are provided below: 1. `< -100\nOR > 100\nOR oneof 1 5 7 10\nAND inrange -200 200\nAND !oneof 77 -77 88`. @@ -559,4 +559,4 @@ public class CustomSubcommand } ``` -Note the line `var parser = new ArgumentParser(name: CustomParserConfig.ParserName);`. We assign a custom name to the `ArgumentParser` because `OptionConfigurationSetter` expects a dictionary that uses parser quantum names as keys. You can omit this name if you don't need a configuration for root options or you want to use the parser's default name, which is equal to `nameof(ArgumentParser)`. +Note the line `var parser = new ArgumentParser(name: CustomParserConfig.ParserName);`. We assign a custom name to the `ArgumentParser` because `OptionConfigurationSetter` expects a dictionary that uses parser quantum names as keys. You can omit this name if you do not need a configuration for root options or you want to use the parser's default name, which is equal to `nameof(ArgumentParser)`. diff --git a/Documentation/PrintingHelp.md b/Documentation/PrintingHelp.md index a4a2db5..cbe7895 100644 --- a/Documentation/PrintingHelp.md +++ b/Documentation/PrintingHelp.md @@ -1,5 +1,5 @@ # Printing Help -Argument parser uses description generator to geterate command-line help. If you don't specify it, the default generator will be used. +Argument parser uses description generator to geterate command-line help. If you do not specify it, the default generator will be used. ## Table of Contents * [Add Program Information](#add-program-information) diff --git a/Documentation/Subcommands.md b/Documentation/Subcommands.md index 685e825..c468e05 100644 --- a/Documentation/Subcommands.md +++ b/Documentation/Subcommands.md @@ -40,7 +40,7 @@ subcommandGroup.AddOptions(new FlagOption("debug", afterHandlingAction: () => de ``` ### Default Help Option -By default, subcommands are supplied with standard help option. However, you can specify that help option isn't needed. To do this, you can set the appropriate value for property `UseDefaultHelpOption` or add your own help option. +By default, subcommands are supplied with standard help option. However, you can specify that help option is not needed. To do this, you can set the appropriate value for property `UseDefaultHelpOption` or add your own help option. ```cs var parser = new ArgumentParser(); diff --git a/Examples/NetArgumentParser.Examples.ComplexFurtherConfigureOption/Program.cs b/Examples/NetArgumentParser.Examples.ComplexFurtherConfigureOption/Program.cs index 63e7d21..961457e 100644 --- a/Examples/NetArgumentParser.Examples.ComplexFurtherConfigureOption/Program.cs +++ b/Examples/NetArgumentParser.Examples.ComplexFurtherConfigureOption/Program.cs @@ -41,7 +41,7 @@ "file", ]; -parser.Parse(argumentsWithError); // Error: Option value 'file' doesn't satisfy the restriction +parser.Parse(argumentsWithError); // Error: Option value 'file' does not satisfy the restriction */ string parsedFiles = string.Join(" ", config.CustomSubcommand.Files); From eceb3358d339a30f2581fcd82b07344f3efda770 Mon Sep 17 00:00:00 2001 From: yakovypg Date: Wed, 10 Jun 2026 20:31:34 +0300 Subject: [PATCH 3/4] Use new solution file --- NetArgumentParser.sln | 223 ----------------------------------------- NetArgumentParser.slnx | 21 ++++ 2 files changed, 21 insertions(+), 223 deletions(-) delete mode 100644 NetArgumentParser.sln create mode 100644 NetArgumentParser.slnx diff --git a/NetArgumentParser.sln b/NetArgumentParser.sln deleted file mode 100644 index 2947945..0000000 --- a/NetArgumentParser.sln +++ /dev/null @@ -1,223 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{649A384F-36AE-432F-8AF5-D28674D77B7D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetArgumentParser", "Core\NetArgumentParser\NetArgumentParser.csproj", "{2C140CC4-00C6-4017-8CB3-68B32CC7C058}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{DCD4DEB9-0ACD-4CA0-AAF6-A7298C908266}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetArgumentParser.Tests", "Tests\NetArgumentParser.Tests\NetArgumentParser.Tests.csproj", "{3AB4D374-88E7-4681-B9C7-2C3D57DF8DC8}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Examples", "Examples", "{5F8AF5AE-CF52-4ECE-92B8-EE6F7F401E98}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetArgumentParser.Examples.Simple", "Examples\NetArgumentParser.Examples.Simple\NetArgumentParser.Examples.Simple.csproj", "{540F9CC0-410A-48D4-B44E-8B3845C66F0B}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetArgumentParser.Examples.AllUseCases", "Examples\NetArgumentParser.Examples.AllUseCases\NetArgumentParser.Examples.AllUseCases.csproj", "{F56E27F2-A034-4268-BF1A-9D211648D999}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetArgumentParser.Examples.FurtherConfigureOption", "Examples\NetArgumentParser.Examples.FurtherConfigureOption\NetArgumentParser.Examples.FurtherConfigureOption.csproj", "{850C9444-F85A-46FA-AE65-734A9AED1A0B}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetArgumentParser.Examples.CustomConverter", "Examples\NetArgumentParser.Examples.CustomConverter\NetArgumentParser.Examples.CustomConverter.csproj", "{67AEF7CC-BDC4-43D0-8627-9C807502A6EE}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetArgumentParser.Examples.OptionalArguments", "Examples\NetArgumentParser.Examples.OptionalArguments\NetArgumentParser.Examples.OptionalArguments.csproj", "{3B17B627-D157-47C8-8F1A-4A768ADA0F74}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetArgumentParser.Examples.ParserGenerationUsingAttributes", "Examples\NetArgumentParser.Examples.ParserGenerationUsingAttributes\NetArgumentParser.Examples.ParserGenerationUsingAttributes.csproj", "{150103E0-BAED-4EB7-BB3A-7871D5E5EB22}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetArgumentParser.Examples.Subcommands", "Examples\NetArgumentParser.Examples.Subcommands\NetArgumentParser.Examples.Subcommands.csproj", "{A9379A83-FBDD-425F-8C4A-9EA60EC6D779}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetArgumentParser.Examples.PrintingHelp", "Examples\NetArgumentParser.Examples.PrintingHelp\NetArgumentParser.Examples.PrintingHelp.csproj", "{91681128-8B86-471D-82B4-2A7F0390569F}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetArgumentParser.Examples.AddChoicesToDescription", "Examples\NetArgumentParser.Examples.AddChoicesToDescription\NetArgumentParser.Examples.AddChoicesToDescription.csproj", "{61A10479-C5AC-4D81-B004-9BE69CC8ADDD}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetArgumentParser.Examples.ComplexFurtherConfigureOption", "Examples\NetArgumentParser.Examples.ComplexFurtherConfigureOption\NetArgumentParser.Examples.ComplexFurtherConfigureOption.csproj", "{E63FD1A4-3CBB-4DAD-80DE-185EF8586AA0}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetArgumentParser.Examples.ParseArgumentsMultipleTimes", "Examples\NetArgumentParser.Examples.ParseArgumentsMultipleTimes\NetArgumentParser.Examples.ParseArgumentsMultipleTimes.csproj", "{FB1F330C-502B-42FC-8D24-46A9106A0F2A}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2C140CC4-00C6-4017-8CB3-68B32CC7C058}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2C140CC4-00C6-4017-8CB3-68B32CC7C058}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2C140CC4-00C6-4017-8CB3-68B32CC7C058}.Debug|x64.ActiveCfg = Debug|Any CPU - {2C140CC4-00C6-4017-8CB3-68B32CC7C058}.Debug|x64.Build.0 = Debug|Any CPU - {2C140CC4-00C6-4017-8CB3-68B32CC7C058}.Debug|x86.ActiveCfg = Debug|Any CPU - {2C140CC4-00C6-4017-8CB3-68B32CC7C058}.Debug|x86.Build.0 = Debug|Any CPU - {2C140CC4-00C6-4017-8CB3-68B32CC7C058}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2C140CC4-00C6-4017-8CB3-68B32CC7C058}.Release|Any CPU.Build.0 = Release|Any CPU - {2C140CC4-00C6-4017-8CB3-68B32CC7C058}.Release|x64.ActiveCfg = Release|Any CPU - {2C140CC4-00C6-4017-8CB3-68B32CC7C058}.Release|x64.Build.0 = Release|Any CPU - {2C140CC4-00C6-4017-8CB3-68B32CC7C058}.Release|x86.ActiveCfg = Release|Any CPU - {2C140CC4-00C6-4017-8CB3-68B32CC7C058}.Release|x86.Build.0 = Release|Any CPU - {3AB4D374-88E7-4681-B9C7-2C3D57DF8DC8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3AB4D374-88E7-4681-B9C7-2C3D57DF8DC8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3AB4D374-88E7-4681-B9C7-2C3D57DF8DC8}.Debug|x64.ActiveCfg = Debug|Any CPU - {3AB4D374-88E7-4681-B9C7-2C3D57DF8DC8}.Debug|x64.Build.0 = Debug|Any CPU - {3AB4D374-88E7-4681-B9C7-2C3D57DF8DC8}.Debug|x86.ActiveCfg = Debug|Any CPU - {3AB4D374-88E7-4681-B9C7-2C3D57DF8DC8}.Debug|x86.Build.0 = Debug|Any CPU - {3AB4D374-88E7-4681-B9C7-2C3D57DF8DC8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3AB4D374-88E7-4681-B9C7-2C3D57DF8DC8}.Release|Any CPU.Build.0 = Release|Any CPU - {3AB4D374-88E7-4681-B9C7-2C3D57DF8DC8}.Release|x64.ActiveCfg = Release|Any CPU - {3AB4D374-88E7-4681-B9C7-2C3D57DF8DC8}.Release|x64.Build.0 = Release|Any CPU - {3AB4D374-88E7-4681-B9C7-2C3D57DF8DC8}.Release|x86.ActiveCfg = Release|Any CPU - {3AB4D374-88E7-4681-B9C7-2C3D57DF8DC8}.Release|x86.Build.0 = Release|Any CPU - {540F9CC0-410A-48D4-B44E-8B3845C66F0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {540F9CC0-410A-48D4-B44E-8B3845C66F0B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {540F9CC0-410A-48D4-B44E-8B3845C66F0B}.Debug|x64.ActiveCfg = Debug|Any CPU - {540F9CC0-410A-48D4-B44E-8B3845C66F0B}.Debug|x64.Build.0 = Debug|Any CPU - {540F9CC0-410A-48D4-B44E-8B3845C66F0B}.Debug|x86.ActiveCfg = Debug|Any CPU - {540F9CC0-410A-48D4-B44E-8B3845C66F0B}.Debug|x86.Build.0 = Debug|Any CPU - {540F9CC0-410A-48D4-B44E-8B3845C66F0B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {540F9CC0-410A-48D4-B44E-8B3845C66F0B}.Release|Any CPU.Build.0 = Release|Any CPU - {540F9CC0-410A-48D4-B44E-8B3845C66F0B}.Release|x64.ActiveCfg = Release|Any CPU - {540F9CC0-410A-48D4-B44E-8B3845C66F0B}.Release|x64.Build.0 = Release|Any CPU - {540F9CC0-410A-48D4-B44E-8B3845C66F0B}.Release|x86.ActiveCfg = Release|Any CPU - {540F9CC0-410A-48D4-B44E-8B3845C66F0B}.Release|x86.Build.0 = Release|Any CPU - {F56E27F2-A034-4268-BF1A-9D211648D999}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F56E27F2-A034-4268-BF1A-9D211648D999}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F56E27F2-A034-4268-BF1A-9D211648D999}.Debug|x64.ActiveCfg = Debug|Any CPU - {F56E27F2-A034-4268-BF1A-9D211648D999}.Debug|x64.Build.0 = Debug|Any CPU - {F56E27F2-A034-4268-BF1A-9D211648D999}.Debug|x86.ActiveCfg = Debug|Any CPU - {F56E27F2-A034-4268-BF1A-9D211648D999}.Debug|x86.Build.0 = Debug|Any CPU - {F56E27F2-A034-4268-BF1A-9D211648D999}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F56E27F2-A034-4268-BF1A-9D211648D999}.Release|Any CPU.Build.0 = Release|Any CPU - {F56E27F2-A034-4268-BF1A-9D211648D999}.Release|x64.ActiveCfg = Release|Any CPU - {F56E27F2-A034-4268-BF1A-9D211648D999}.Release|x64.Build.0 = Release|Any CPU - {F56E27F2-A034-4268-BF1A-9D211648D999}.Release|x86.ActiveCfg = Release|Any CPU - {F56E27F2-A034-4268-BF1A-9D211648D999}.Release|x86.Build.0 = Release|Any CPU - {850C9444-F85A-46FA-AE65-734A9AED1A0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {850C9444-F85A-46FA-AE65-734A9AED1A0B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {850C9444-F85A-46FA-AE65-734A9AED1A0B}.Debug|x64.ActiveCfg = Debug|Any CPU - {850C9444-F85A-46FA-AE65-734A9AED1A0B}.Debug|x64.Build.0 = Debug|Any CPU - {850C9444-F85A-46FA-AE65-734A9AED1A0B}.Debug|x86.ActiveCfg = Debug|Any CPU - {850C9444-F85A-46FA-AE65-734A9AED1A0B}.Debug|x86.Build.0 = Debug|Any CPU - {850C9444-F85A-46FA-AE65-734A9AED1A0B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {850C9444-F85A-46FA-AE65-734A9AED1A0B}.Release|Any CPU.Build.0 = Release|Any CPU - {850C9444-F85A-46FA-AE65-734A9AED1A0B}.Release|x64.ActiveCfg = Release|Any CPU - {850C9444-F85A-46FA-AE65-734A9AED1A0B}.Release|x64.Build.0 = Release|Any CPU - {850C9444-F85A-46FA-AE65-734A9AED1A0B}.Release|x86.ActiveCfg = Release|Any CPU - {850C9444-F85A-46FA-AE65-734A9AED1A0B}.Release|x86.Build.0 = Release|Any CPU - {67AEF7CC-BDC4-43D0-8627-9C807502A6EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {67AEF7CC-BDC4-43D0-8627-9C807502A6EE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {67AEF7CC-BDC4-43D0-8627-9C807502A6EE}.Debug|x64.ActiveCfg = Debug|Any CPU - {67AEF7CC-BDC4-43D0-8627-9C807502A6EE}.Debug|x64.Build.0 = Debug|Any CPU - {67AEF7CC-BDC4-43D0-8627-9C807502A6EE}.Debug|x86.ActiveCfg = Debug|Any CPU - {67AEF7CC-BDC4-43D0-8627-9C807502A6EE}.Debug|x86.Build.0 = Debug|Any CPU - {67AEF7CC-BDC4-43D0-8627-9C807502A6EE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {67AEF7CC-BDC4-43D0-8627-9C807502A6EE}.Release|Any CPU.Build.0 = Release|Any CPU - {67AEF7CC-BDC4-43D0-8627-9C807502A6EE}.Release|x64.ActiveCfg = Release|Any CPU - {67AEF7CC-BDC4-43D0-8627-9C807502A6EE}.Release|x64.Build.0 = Release|Any CPU - {67AEF7CC-BDC4-43D0-8627-9C807502A6EE}.Release|x86.ActiveCfg = Release|Any CPU - {67AEF7CC-BDC4-43D0-8627-9C807502A6EE}.Release|x86.Build.0 = Release|Any CPU - {3B17B627-D157-47C8-8F1A-4A768ADA0F74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3B17B627-D157-47C8-8F1A-4A768ADA0F74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3B17B627-D157-47C8-8F1A-4A768ADA0F74}.Debug|x64.ActiveCfg = Debug|Any CPU - {3B17B627-D157-47C8-8F1A-4A768ADA0F74}.Debug|x64.Build.0 = Debug|Any CPU - {3B17B627-D157-47C8-8F1A-4A768ADA0F74}.Debug|x86.ActiveCfg = Debug|Any CPU - {3B17B627-D157-47C8-8F1A-4A768ADA0F74}.Debug|x86.Build.0 = Debug|Any CPU - {3B17B627-D157-47C8-8F1A-4A768ADA0F74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3B17B627-D157-47C8-8F1A-4A768ADA0F74}.Release|Any CPU.Build.0 = Release|Any CPU - {3B17B627-D157-47C8-8F1A-4A768ADA0F74}.Release|x64.ActiveCfg = Release|Any CPU - {3B17B627-D157-47C8-8F1A-4A768ADA0F74}.Release|x64.Build.0 = Release|Any CPU - {3B17B627-D157-47C8-8F1A-4A768ADA0F74}.Release|x86.ActiveCfg = Release|Any CPU - {3B17B627-D157-47C8-8F1A-4A768ADA0F74}.Release|x86.Build.0 = Release|Any CPU - {150103E0-BAED-4EB7-BB3A-7871D5E5EB22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {150103E0-BAED-4EB7-BB3A-7871D5E5EB22}.Debug|Any CPU.Build.0 = Debug|Any CPU - {150103E0-BAED-4EB7-BB3A-7871D5E5EB22}.Debug|x64.ActiveCfg = Debug|Any CPU - {150103E0-BAED-4EB7-BB3A-7871D5E5EB22}.Debug|x64.Build.0 = Debug|Any CPU - {150103E0-BAED-4EB7-BB3A-7871D5E5EB22}.Debug|x86.ActiveCfg = Debug|Any CPU - {150103E0-BAED-4EB7-BB3A-7871D5E5EB22}.Debug|x86.Build.0 = Debug|Any CPU - {150103E0-BAED-4EB7-BB3A-7871D5E5EB22}.Release|Any CPU.ActiveCfg = Release|Any CPU - {150103E0-BAED-4EB7-BB3A-7871D5E5EB22}.Release|Any CPU.Build.0 = Release|Any CPU - {150103E0-BAED-4EB7-BB3A-7871D5E5EB22}.Release|x64.ActiveCfg = Release|Any CPU - {150103E0-BAED-4EB7-BB3A-7871D5E5EB22}.Release|x64.Build.0 = Release|Any CPU - {150103E0-BAED-4EB7-BB3A-7871D5E5EB22}.Release|x86.ActiveCfg = Release|Any CPU - {150103E0-BAED-4EB7-BB3A-7871D5E5EB22}.Release|x86.Build.0 = Release|Any CPU - {A9379A83-FBDD-425F-8C4A-9EA60EC6D779}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A9379A83-FBDD-425F-8C4A-9EA60EC6D779}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A9379A83-FBDD-425F-8C4A-9EA60EC6D779}.Debug|x64.ActiveCfg = Debug|Any CPU - {A9379A83-FBDD-425F-8C4A-9EA60EC6D779}.Debug|x64.Build.0 = Debug|Any CPU - {A9379A83-FBDD-425F-8C4A-9EA60EC6D779}.Debug|x86.ActiveCfg = Debug|Any CPU - {A9379A83-FBDD-425F-8C4A-9EA60EC6D779}.Debug|x86.Build.0 = Debug|Any CPU - {A9379A83-FBDD-425F-8C4A-9EA60EC6D779}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A9379A83-FBDD-425F-8C4A-9EA60EC6D779}.Release|Any CPU.Build.0 = Release|Any CPU - {A9379A83-FBDD-425F-8C4A-9EA60EC6D779}.Release|x64.ActiveCfg = Release|Any CPU - {A9379A83-FBDD-425F-8C4A-9EA60EC6D779}.Release|x64.Build.0 = Release|Any CPU - {A9379A83-FBDD-425F-8C4A-9EA60EC6D779}.Release|x86.ActiveCfg = Release|Any CPU - {A9379A83-FBDD-425F-8C4A-9EA60EC6D779}.Release|x86.Build.0 = Release|Any CPU - {91681128-8B86-471D-82B4-2A7F0390569F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {91681128-8B86-471D-82B4-2A7F0390569F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {91681128-8B86-471D-82B4-2A7F0390569F}.Debug|x64.ActiveCfg = Debug|Any CPU - {91681128-8B86-471D-82B4-2A7F0390569F}.Debug|x64.Build.0 = Debug|Any CPU - {91681128-8B86-471D-82B4-2A7F0390569F}.Debug|x86.ActiveCfg = Debug|Any CPU - {91681128-8B86-471D-82B4-2A7F0390569F}.Debug|x86.Build.0 = Debug|Any CPU - {91681128-8B86-471D-82B4-2A7F0390569F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {91681128-8B86-471D-82B4-2A7F0390569F}.Release|Any CPU.Build.0 = Release|Any CPU - {91681128-8B86-471D-82B4-2A7F0390569F}.Release|x64.ActiveCfg = Release|Any CPU - {91681128-8B86-471D-82B4-2A7F0390569F}.Release|x64.Build.0 = Release|Any CPU - {91681128-8B86-471D-82B4-2A7F0390569F}.Release|x86.ActiveCfg = Release|Any CPU - {91681128-8B86-471D-82B4-2A7F0390569F}.Release|x86.Build.0 = Release|Any CPU - {61A10479-C5AC-4D81-B004-9BE69CC8ADDD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {61A10479-C5AC-4D81-B004-9BE69CC8ADDD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {61A10479-C5AC-4D81-B004-9BE69CC8ADDD}.Debug|x64.ActiveCfg = Debug|Any CPU - {61A10479-C5AC-4D81-B004-9BE69CC8ADDD}.Debug|x64.Build.0 = Debug|Any CPU - {61A10479-C5AC-4D81-B004-9BE69CC8ADDD}.Debug|x86.ActiveCfg = Debug|Any CPU - {61A10479-C5AC-4D81-B004-9BE69CC8ADDD}.Debug|x86.Build.0 = Debug|Any CPU - {61A10479-C5AC-4D81-B004-9BE69CC8ADDD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {61A10479-C5AC-4D81-B004-9BE69CC8ADDD}.Release|Any CPU.Build.0 = Release|Any CPU - {61A10479-C5AC-4D81-B004-9BE69CC8ADDD}.Release|x64.ActiveCfg = Release|Any CPU - {61A10479-C5AC-4D81-B004-9BE69CC8ADDD}.Release|x64.Build.0 = Release|Any CPU - {61A10479-C5AC-4D81-B004-9BE69CC8ADDD}.Release|x86.ActiveCfg = Release|Any CPU - {61A10479-C5AC-4D81-B004-9BE69CC8ADDD}.Release|x86.Build.0 = Release|Any CPU - {E63FD1A4-3CBB-4DAD-80DE-185EF8586AA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E63FD1A4-3CBB-4DAD-80DE-185EF8586AA0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E63FD1A4-3CBB-4DAD-80DE-185EF8586AA0}.Debug|x64.ActiveCfg = Debug|Any CPU - {E63FD1A4-3CBB-4DAD-80DE-185EF8586AA0}.Debug|x64.Build.0 = Debug|Any CPU - {E63FD1A4-3CBB-4DAD-80DE-185EF8586AA0}.Debug|x86.ActiveCfg = Debug|Any CPU - {E63FD1A4-3CBB-4DAD-80DE-185EF8586AA0}.Debug|x86.Build.0 = Debug|Any CPU - {E63FD1A4-3CBB-4DAD-80DE-185EF8586AA0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E63FD1A4-3CBB-4DAD-80DE-185EF8586AA0}.Release|Any CPU.Build.0 = Release|Any CPU - {E63FD1A4-3CBB-4DAD-80DE-185EF8586AA0}.Release|x64.ActiveCfg = Release|Any CPU - {E63FD1A4-3CBB-4DAD-80DE-185EF8586AA0}.Release|x64.Build.0 = Release|Any CPU - {E63FD1A4-3CBB-4DAD-80DE-185EF8586AA0}.Release|x86.ActiveCfg = Release|Any CPU - {E63FD1A4-3CBB-4DAD-80DE-185EF8586AA0}.Release|x86.Build.0 = Release|Any CPU - {FB1F330C-502B-42FC-8D24-46A9106A0F2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FB1F330C-502B-42FC-8D24-46A9106A0F2A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FB1F330C-502B-42FC-8D24-46A9106A0F2A}.Debug|x64.ActiveCfg = Debug|Any CPU - {FB1F330C-502B-42FC-8D24-46A9106A0F2A}.Debug|x64.Build.0 = Debug|Any CPU - {FB1F330C-502B-42FC-8D24-46A9106A0F2A}.Debug|x86.ActiveCfg = Debug|Any CPU - {FB1F330C-502B-42FC-8D24-46A9106A0F2A}.Debug|x86.Build.0 = Debug|Any CPU - {FB1F330C-502B-42FC-8D24-46A9106A0F2A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FB1F330C-502B-42FC-8D24-46A9106A0F2A}.Release|Any CPU.Build.0 = Release|Any CPU - {FB1F330C-502B-42FC-8D24-46A9106A0F2A}.Release|x64.ActiveCfg = Release|Any CPU - {FB1F330C-502B-42FC-8D24-46A9106A0F2A}.Release|x64.Build.0 = Release|Any CPU - {FB1F330C-502B-42FC-8D24-46A9106A0F2A}.Release|x86.ActiveCfg = Release|Any CPU - {FB1F330C-502B-42FC-8D24-46A9106A0F2A}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {2C140CC4-00C6-4017-8CB3-68B32CC7C058} = {649A384F-36AE-432F-8AF5-D28674D77B7D} - {3AB4D374-88E7-4681-B9C7-2C3D57DF8DC8} = {DCD4DEB9-0ACD-4CA0-AAF6-A7298C908266} - {540F9CC0-410A-48D4-B44E-8B3845C66F0B} = {5F8AF5AE-CF52-4ECE-92B8-EE6F7F401E98} - {F56E27F2-A034-4268-BF1A-9D211648D999} = {5F8AF5AE-CF52-4ECE-92B8-EE6F7F401E98} - {850C9444-F85A-46FA-AE65-734A9AED1A0B} = {5F8AF5AE-CF52-4ECE-92B8-EE6F7F401E98} - {67AEF7CC-BDC4-43D0-8627-9C807502A6EE} = {5F8AF5AE-CF52-4ECE-92B8-EE6F7F401E98} - {3B17B627-D157-47C8-8F1A-4A768ADA0F74} = {5F8AF5AE-CF52-4ECE-92B8-EE6F7F401E98} - {150103E0-BAED-4EB7-BB3A-7871D5E5EB22} = {5F8AF5AE-CF52-4ECE-92B8-EE6F7F401E98} - {A9379A83-FBDD-425F-8C4A-9EA60EC6D779} = {5F8AF5AE-CF52-4ECE-92B8-EE6F7F401E98} - {91681128-8B86-471D-82B4-2A7F0390569F} = {5F8AF5AE-CF52-4ECE-92B8-EE6F7F401E98} - {61A10479-C5AC-4D81-B004-9BE69CC8ADDD} = {5F8AF5AE-CF52-4ECE-92B8-EE6F7F401E98} - {E63FD1A4-3CBB-4DAD-80DE-185EF8586AA0} = {5F8AF5AE-CF52-4ECE-92B8-EE6F7F401E98} - {FB1F330C-502B-42FC-8D24-46A9106A0F2A} = {5F8AF5AE-CF52-4ECE-92B8-EE6F7F401E98} - EndGlobalSection -EndGlobal diff --git a/NetArgumentParser.slnx b/NetArgumentParser.slnx new file mode 100644 index 0000000..7fd395f --- /dev/null +++ b/NetArgumentParser.slnx @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + From 57eab98189d01c7ed008b09a79bc50b9824a1ba4 Mon Sep 17 00:00:00 2001 From: yakovypg Date: Wed, 10 Jun 2026 20:32:51 +0300 Subject: [PATCH 4/4] Update version --- Core/NetArgumentParser/NetArgumentParser.csproj | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/NetArgumentParser/NetArgumentParser.csproj b/Core/NetArgumentParser/NetArgumentParser.csproj index d31a7b1..156f848 100644 --- a/Core/NetArgumentParser/NetArgumentParser.csproj +++ b/Core/NetArgumentParser/NetArgumentParser.csproj @@ -2,7 +2,7 @@ NetArgumentParser - 1.0.9 + 1.1.0 NetArgumentParser NetArgumentParser yakovypg diff --git a/README.md b/README.md index f2715e0..2b41186 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ license - version + version csharp