C#控制台应用程序不会运行

时间:2013-06-13 15:40:17

标签: c# console-application parameter-passing command-line-arguments

我试图将我的应用程序更改为控制台应用程序。我希望它工作,以便如果传递一个参数,则执行方法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();
        }

    }

有什么想法吗?

由于

6 个答案:

答案 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 typeConsole 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语句。为什么我的参数没有被选中?