Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#app命令行输出写入输入行_C#_Powershell_Output_Command Line Interface - Fatal编程技术网

C#app命令行输出写入输入行

C#app命令行输出写入输入行,c#,powershell,output,command-line-interface,C#,Powershell,Output,Command Line Interface,这可能是一个简单的问题,我只是不知道如何正确使用lol。无论如何,请允许我描述一下我的问题 因此,我编写了一个程序,帮助用户管理其程序的安装。出于显而易见的原因,我提供了对这个应用程序的GUI和命令行访问(GUI在WPF中) 总之,我的问题是向命令行输出一堆文本。这是我的密码: void WriteHelp() { //连接到控制台以向其写入 如果(附件控制台(-1)) { WriteLine(“InstallAssist帮助维护您的Shine日历安装”); Console.WriteLine(

这可能是一个简单的问题,我只是不知道如何正确使用lol。无论如何,请允许我描述一下我的问题

因此,我编写了一个程序,帮助用户管理其程序的安装。出于显而易见的原因,我提供了对这个应用程序的GUI和命令行访问(GUI在WPF中)

总之,我的问题是向命令行输出一堆文本。这是我的密码:

void WriteHelp()
{
//连接到控制台以向其写入
如果(附件控制台(-1))
{
WriteLine(“InstallAssist帮助维护您的Shine日历安装”);
Console.WriteLine(“版本”+版本字符串+”(“+版本ID+”));
Console.WriteLine(“由Jayke R.Huempfner撰写,版权所有,2018年”);
Console.WriteLine();
WriteLine(“可通过GUI或使用以下参数访问:”);
Console.WriteLine();
Console.WriteLine(“参数动作”);
Console.WriteLine(“----------------”;
Console.WriteLine(“-about(-a)显示版本/系统信息”);
Console.WriteLine(“-hardsete(-hr)执行硬复位”);
WriteLine(“-help(-?”显示此帮助页”);
Console.WriteLine(“-info(-i)显示版本/系统信息”);
WriteLine(“-quiet(-q)quiet模式,不显示GUI”);
控制台.WriteLine(“-reset(-e)显示重置选项GUI”);
Console.WriteLine(“-skipconfirm(-sc)跳过确认GUI屏幕”);
Console.WriteLine(“-softreset(-s)执行软重置”);
Console.WriteLine(“-uninstall(-u)uninstall,保留用户数据”);
Console.WriteLine(“-Uninstall(-ua)Uninstall,删除用户数据”);
Console.WriteLine();
Console.WriteLine(“有关更多信息,请访问:”);
控制台写入线(“https://shinecalendar.com/help/advanced");
}
}
这看起来很简单,不是吗?我想结果会很明显。但是,当我进入PowerShell并访问它时,我得到的是:

PS C:\Users\jacob\Documents\Visual Studio 2017\Projects\ShineCalendar\ShineWin\bin\Release>\InstallAssist.exe-帮助
PS C:\Users\jacob\Documents\Visual Studio 2017\Projects\ShineCalendar\ShineWin\bin\Release>InstallAssist可帮助维护您的Shine日历安装。
版本0.8.0(800)
作者:杰克·R·亨普夫纳。版权所有2018。
可通过GUI或使用以下参数访问:
论元行为
--------            ------
-关于(-a)显示版本/系统信息
-硬复位(-hr)执行硬复位
-帮助(-)显示此帮助页。
-信息(-i)显示版本/系统信息
-安静(-q)安静模式,不显示GUI
-重置(-e)显示重置选项GUI
-SkipConfig(-sc)跳过确认GUI屏幕
-软复位(-s)执行软复位
-卸载(-u)卸载,保留用户数据
-卸载所有(-ua)卸载,删除用户数据
有关更多信息,请访问:
https://shinecalendar.com/help/advanced
格式化结果很好,但问题是,顶行正在写入下一个命令输入中。当我开始输入更多的命令和诸如此类的东西时,它最终会覆盖行。(即:

PS C:\Users\jacob\Documents\Visual Studio 2017\Projects\ShineCalendar\ShineWin\bin\Release>\InstallAssist.exe-帮助
PS C:\Users\jacob\Documents\Visual Studio 2017\Projects\ShineCalendar\ShineWin\bin\Release>dir
拉齐奥。
版本0.8.0(800)
目录:C:\Users\jacob\Documents\Visual Studio 2017\Projects\ShineCalendar\ShineWin\bin\Release
可通过GUI或使用以下参数访问:
模式LastWriteTime长度名称
----                -------------         ------ ----
-a----2016年9月9日下午2:59 77312 CsvHelper.dll
…(其余省略)
)


我该怎么做才能使它写入输出,然后显示整个
“PS C:\Users\…\bin\Release>”
之后的内容?

您的问题是,您的应用程序立即(作为WPF启动代码的一部分)释放控制台。然后,cmd.exe通过打印提示准备接受更多输入

然后重新连接到控制台并开始输出帮助文本。但是cmd.exe不知道这一点,所以控制台被弄乱了


我建议通过制作两个程序来修复它。保持WPF应用程序的原样,但在前面添加一个小型控制台应用程序。控制台应用程序打印您想要的文本(如果需要),然后启动WPF应用程序。

Hmm。。。我想这很合理,不是吗?真的很臭,不过,我有点想把它保存在一个应用程序中。但好吧,我想我会在这方面探索我的选择。