1

我有一个winforms应用程序。我想从命令行运行 .exe 并将输出从输出文本框之一重定向到命令行。我不想启动 winform 应用程序,只是在后台运行逻辑。

我尝试了这个线程的建议

C# 应用程序 GUI 和命令行

但是当我通过 cmd.exe 运行应用程序时,在 cmd.exe 的命令行中没有看到任何 console.writeline 消息。谁能指导我我可能做错了什么?

我有一个执行此逻辑的 if 语句:

  if(args.Length >0)
   {
     Console.writeline("this has arguments");
     new Mainform();
   }
  else
   {
    Application.EnableVisualStyles();
    Application.Run(new MainForm());
   }

其他部分仍然有效。但是,如果使用 cmd.exe 运行应用程序,或者当我使用属性 -> 调试 -> 命令行参数并在调试时为其提供运行参数时,if 部分没有任何反应。我不知道我做错了什么。

4

1 回答 1

0

我认为您创建Windows Forms project并粘贴了代码?如果是这样,它就无法工作。你必须创建你的Console project,这是我测试过的代码,它就像一个魅力,除了当显示表单时(GUI模式)控制台仍然存在,关闭该控制台也会关闭你的表单:

class Program
{
    static void Main(string[] args)
    {            
            if (args.Length == 0)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
            else //Process command lines
            {
                Console.WriteLine("Please enter some command.");
                string cmd = Console.ReadLine();
                Console.WriteLine("You entered: " + cmd);
            }            
    }
}

因为Console project不会System.Windows.Forms.dll为您自动添加对的引用,所以您必须手动执行此操作才能在该控制台项目中创建表单。关键是您在一段时间内应用了代码,Winforms project它应该在Console project. 我知道只有一种方法可以在正在运行的 winforms 应用程序中显示控制台窗口,cmd.exe但它会显示一个新的控制台窗口,而不是您用来运行应用程序的现有控制台窗口。

于 2013-06-13T18:47:08.013 回答