我试图将我的应用程序更改为控制台应用程序。我希望它工作,以便如果传递一个参数,则执行方法1,如果没有传递参数,则执行方法2。
从我的代码中,当我尝试运行它没有任何反应。
这是我的主要代码:
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run();
RunTestCases runTestCases = new RunTestCases();
DataIntegration dataIntegration = new DataIntegration();
if (args != null)
{
runTestCases.RunTestCaseForSelectedField(args);
}
else
{
runTestCases.RunTestCaseForAllFields();
}
}
有什么想法吗?
由于
答案 0 :(得分:4)
Application.Run
启动一个消息循环,直到您的应用关闭(收到退出消息)。因此,在{quid}之前执行Application.Run()
之后没有任何内容。
问题是你是否真的需要那些涉及应用程序的行。如果你没有Window,很可能,消息循环是多余的。如果要对Windows消息执行操作,则可能需要消息循环。但是,那么你将在一个单独的线程中运行这个循环。
答案 1 :(得分:0)
如果你调试它,你会发现真正的问题,就像在args != null
行中设置断点并看到完全 args
内的内容一样。
但是,这可能是因为args
永远不会为空,所以请填写:
if (args.Any())
(编辑: JeffRSon 也让您的代码出现了另一个错误,所以他的回答也是正确的,但是,一旦您解决了问题,您就会遇到我描述的args
问题原来的问题。所以我也会在这里保留我的答案。
启动没有参数的控制台应用时,args
将为空数组,不为空值
答案 2 :(得分:0)
在main方法中删除前三行。
如果Output type
为Console Application
,请检入项目属性
设置方法的入口点
答案 3 :(得分:0)
我没有代表评论,但我看到的一个问题是你的第一个条件总是为真,因为没有命令行输入的args是零长度字符串数组而不是空值。您想检查以查看args中的内容而不是假设它为null。
答案 4 :(得分:0)
控制台应用程序中不需要与应用程序相关的代码,它仅在Windows应用程序(wpf)中使用,也是其他人所说的' args'是有效的。
答案 5 :(得分:0)
if (args.Length > 0)
{
runTestCases.RunTestCaseForSelectedField(args[0]);
}
else
{
//runTestCases.RunTestCaseForAllFields();
Console.WriteLine("No Parameter");
}
这就是我现在所拥有的,无论何时运行它,它都运行else语句。为什么我的参数没有被选中?