我有一个WinForms项目,如果用户想要一个调试控制台,我会分配一个控制台AllocConsole().
所有控制台输出都正常工作,目标架构设置为"任何CPU",但当我将其更改为"x86"时,它不输出任何内容(Console.Read()仍然按预期工作).如果我直接打开EXE,则输出有效.看起来Visual Studio将其重定向到它自己的"输出"窗口.
我也试过这个答案,但它没有用,我也尝试过Console.SetOut(GetStdHandle(-11)),但也没用.
将目标体系结构设置为"任何CPU"对我来说是没有选择的.
所以这是我的两个问题:
我需要用一些参数启动命令窗口并在里面运行更多命令.
例如,启动test.cmd并运行mkdir.
我可以使用processstartinfo启动test.cmd,但我不确定如何运行更多命令.我可以将更多参数传递给test.cmd进程吗?
我该怎么做?
无法添加评论来回答...所以写在这里.
安德里亚,这就是我想要的.但是上面的代码对我来说不起作用.
我正在启动一个test.cmd,这是一个新的命令环境(比如razzle构建环境),我需要运行更多的命令.
psi.FileName = @"c:\test.cmd";
psi.Arguments = @"arg0 arg1 arg2";
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = true;
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
Process p = new Process();
p.StartInfo = psi;
p.Start();
p.StandardInput.WriteLine(@"dir>c:\results.txt");
p.StandardInput.WriteLine(@"dir>c:\results2.txt");
Run Code Online (Sandbox Code Playgroud) 是否有快速而肮脏的方式(或VS宏)将WinForms应用程序转换为控制台应用程序?我有许多这些应用程序不再需要作为Winforms应用程序.我想我可以创建一堆新项目并复制粘贴模块和类,但如果只是删除我所拥有的单个表单并编辑/删除一些内容,我宁愿这样做.