我有一个winforms应用程序。我想从命令行运行.exe并将输出从其中一个输出文本框重定向到命令行。我不想启动winform应用程序只是在后台运行逻辑。
我尝试了这个帖子的建议
C# application both GUI and commandline
但是当我通过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());
}
其他部分仍然有效。但在if部分使用cmd.exe运行应用程序或使用属性 - > debug->命令行参数并在调试时运行参数时,没有任何反应。我不知道我做错了什么。
答案 0 :(得分: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
但是会显示一个新的控制台窗口,而不是用于运行应用程序的现有控制台窗口。