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