Я новичок в программировании на c #. Но я импровизировал подсказки по коду от ОП и Мерлина. Проблема, с которой я столкнулся при использовании их подсказки кода, заключалась в том, что длина аргумента отличается, когда я вызываю app.exe двойным щелчком по app.exe или когда я вызываю его из CMD. Когда app.exe запускается как CLI из CMD, то сам app.exe становится первым аргументом. Ниже мой импровизированный код, который удовлетворительно работает как в виде двойного щелчка графического интерфейса пользователя app.exe, так и в виде CLI из CMD.
[STAThread]
static void Main(/*string[] args*/)
{
string[] args = Environment.GetCommandLineArgs();
Console.WriteLine(args.Length);
if (args.Length <= 1)
{
//calling gui part
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new ACVSAppForm());
}
else
{
//calling cli part
string opt = args[1];
//Console.WriteLine(args[0]);
if(opt == "LastBuild")
{
if(args.Length == 3)
{
var defSettings = Properties.Settings.Default;
defSettings.CIBuildHistPath = args[2];
}
else
{
//
}
CIBuildParser cibuildlst = new CIBuildParser();
cibuildlst.XMLParser();
}
}
}
Надеюсь, это кому-нибудь поможет. Единственный недостаток моего решения - когда app.exe запускается как графический интерфейс, он открывает CMD как окно вывода консоли. Но это нормально для моей работы.