C# 尝试在单个commandlineargs字符串中传递两个参数

C# 尝试在单个commandlineargs字符串中传递两个参数,c#,.net-core,C#,.net Core,我有一个launchSettingsjson文件,配置如下 { "profiles": { "API.Scripts": { "commandName": "Project", "commandLineArgs": "--deleteOldMaterialData yes --createConstructionData \"C:\\cons

我有一个launchSettingsjson文件,配置如下

{
  "profiles": {
    "API.Scripts": {
      "commandName": "Project",
      "commandLineArgs": "--deleteOldMaterialData yes --createConstructionData \"C:\\constructionsData\\Constructions_Data.xlsx\""
    }
  }
}
然后我在program.cs文件中捕获上面的参数,如下所示

using Microsoft.EntityFrameworkCore;
using McMaster.Extensions.CommandLineUtils;

public static int Main(string[] args)
{
    var configuration = ConfigrationBuilder.GetConfigrations(args);
    var options = new DbContextOptionsBuilder<APIDbContext>()
                        .UseNpgsql(configuration["ConnectionStrings:Postgres"])
                        .Options;

    using var ctx = new APIDbContext(options);
    var app = new CommandLineApplication();

    app.HelpOption();
   
    var optionConstructionData = 
        app.Option("-ccd| --deleteOldMaterialData <yesorno> --createConstructionData <FILE>", "The location of the construction data table file in xlxs format.", CommandOptionType.MultipleValue);
    app.OnExecute(() =>
    {
        if (optionConstructionData.HasValue())
        {
            ConstructionSetData.CreateConstructionSets(ctx, optionConstructionData.Value());
        }
        return 0;
    });

    return app.Execute(args); 
} 
使用Microsoft.EntityFrameworkCore;
使用McMaster.Extensions.CommandLineUtils;
公共静态int Main(字符串[]args)
{
var configuration=ConfigrationBuilder.getconfigurations(args);
var options=new DbContextOptionsBuilder()
.UseNpgsql(配置[“ConnectionString:Postgres”])
.选择;
使用var ctx=新的APIDbContext(选项);
var app=new CommandLineApplication();
app.HelpOption();
变量optionConstructionData=
app.Option(“-ccd |--deleteOldMaterialData--createConstructionData”,“xlxs格式的构造数据表文件的位置”,CommandOptionType.MultipleValue);
app.OnExecute(()=>
{
if(optionConstructionData.HasValue())
{
CreateConstructionSets(ctx,optionConstructionData.Value());
}
返回0;
});
返回app.Execute(args);
} 
我试图在
app.OnExecute
方法中捕获
--deleteOldMaterialData
yes
,并在此行
app.Execute(args)

错误是

“无法识别的选项”-deleteOldMaterialData”

请任何人告诉我,如何在此方法
app.OnExecute
中捕获
deleteOldMaterialData
值。如果有人提出实现同样目标的替代方法,那就太好了


非常感谢

@OlivierRogier,你所说的技术是什么意思here@.EnigmaStateConfigRationalBuilder、DbContextOptions Builder、APIDbContext、CommandLineApplication、,ConstructionSetData…我刚刚添加了
usings
,它们是从中派生出来的,并且
ConstructionSetData
只是普通的类文件这里的问题是通过cli捕获参数值,它与任何其他值都不完全相关,这也是我在问题中提到的,并且会出现如下错误
“无法识别的选项”-deleteOldMaterialData'