在C#中创建包含文件路径的命令行

时间:2019-08-13 17:26:00

标签: c# command-line-arguments

我正在尝试创建一个项目,该项目使用命令行参数(包含这些文件的路径)来接受配置文件和2个比较文件。我将以与您传递任何命令行参数相同的方式构造此方法吗?抱歉,我对此并不陌生,所以我不确定在尝试传递文件时是否存在异常。

我可以举个例子吗?这是我被问到的正确方向的图片。

接受以下命令行参数:

  1. 配置文件(带有路径)(如下所述)
  2. 比较文件1(带有路径)
  3. 比较文件2(带有路径)

2 个答案:

答案 0 :(得分:3)

看看Main function自变量的文档

假设这是您的主要功能,并且您想接受3个参数:

static int Main(string[] args)
{
    // check the length of args for validation.
    // args[0] -> Configuration file
    // args[1] -> Comparison File 1
    // args[2] -> Comparison File 2
    ..... DO SOMETHING...
    return 0;
}

用法(从命令行或调试器):

SomeProgram.exe "ConfigFilePath" "ComparisonFile1" "ComparisonFile2".

答案 1 :(得分:1)

因为我真的很喜欢这个nuget(没有关联只是一个粉丝)。这是使用CommandLineUtils的示例 首先使用dotnet new consol TestConsolUtils添加一个新项目,然后添加nuget dotnet add package McMaster.Extensions.CommandLineUtils,然后将此代码复制到程序类中。

using McMaster.Extensions.CommandLineUtils;
using System;

namespace ConsolUtilsTest
{
    class Program
    {
        public static int Main(string[] args)
        => CommandLineApplication.Execute<Program>(args);

        [Argument(0, Description = "Configuration file")]
        [FileExists]
        public string ConfigurationFile { get; }

        [Argument(1, Description = "Comparison file 1")]
        [FileExists]
        public string ComparisonFile1 { get; }

        [Argument(2, Description = "Comparison File 2")]
        [FileExists]
        public string ComparisonFile2 { get; }

        private void OnExecute()
        {
            Console.WriteLine(ConfigurationFile);
            Console.WriteLine(ComparisonFile1);
            Console.WriteLine(ComparisonFile2);
        }
    }
}

做一个dotnet build 转到最有可能在Debug \ netcoreapp2.2 \中构建的dll文件夹 创建一个伪文件A.json,这是必需的,因为实用程序将检查该文件是否存在。 使用dotnet命令运行 dotnet TestConsolUtils.dll A.json A.json A.json 只需查看文档,您就可以使用此工具做更多的事情。