有在Visual Studio控制台应用程序的输出,而不是控制台
-
23-09-2019 - |
题
在做与Eclipse Java编写的控制台应用程序,我看到的,而不是有一个控制台弹出像Visual Studio中的输出被投入在IDE本身就是一个文本框。这是在方便,因为程序已经结束,也,但我还是能利用好这是写在上面,因为它没有得到清除,直到我再次运行它的文字。是否有可能实现这样的与Visual Studio什么?我知道,而不是做
System.Console.WriteLine(str);
我可以做
System.Diagnostics.Debug.WriteLine(str);
但它是不完全一样的东西,因为你在输出窗口得到了很多“垃圾”的,因为所有加载的符号和这样的。
更妙的是,是否有可能拥有一切在IDE本身做,当你运行你的应用程序,而不必控制台运行?
解决方案
在工具 - > Visual Studio的选项对话框 - >调试 - >勾选“重定向所有输出窗口文本到立即窗口”
其他提示
在的Visual Studio 的选项对话框 - >调试 - >勾选 “重定向所有输出窗口文本到立即窗口”。然后转到您的项目设置,并从“控制台应用程序”到“Windows应用程序”更改类型。在这一点上的Visual Studio不会再打开一个控制台窗口,输出重定向到Visual Studio中的输出窗口。但是,你不能做什么“创意”,就像请求按键或文本输入,或清除控制台 - 你会得到运行时异常
根据您重视什么监听,跟踪输出可以去调试窗口,控制台,文件,数据库,或一次。可能性是无穷的字面上,为实现自己的TraceListener是非常简单的。
您可以创建一个包装的应用程序,你运行的直接运行你的真正的应用程序来代替。包装应用可以听stdout和重定向一切跟踪。然后更改运行设置启动您的包装和路径传递到真正的应用程序来运行。
您也可以有调试器如果调试器附加到包装包装自动连接到新的进程。
我知道这只是另一个答案,但我想我会写下来的东西为新的Web开发,谁可能会感到困惑“更改为Windows应用程序”的一部分,因为我觉得在默认情况下在MVC应用程序的Visual Studio 2013默认为一个类库输出类型。
默认我的Web应用程序被设置为输出类型“类库”。你不必改变这种状况。所有我需要做的就是跟着要去工具的建议>选项>调试>重定向所有输出窗口的文本即时窗口。然后我用通过上述乔尔Coehoorn的System.Diagnostics.Trace
建议。
一个简单的解决方案,为我的作品,将工作与控制台的能力(ReadKey,字符串与格式和Arg等),并看到和保存输出:
我写的TextWriter该写入到Console
并Trace
并用它取代Console.Out
。
如果您使用对话框 - >调试 - >勾选“重定向所有输出窗口文本到立即窗口”你得到它在立即窗口和干净漂亮
。我的代码: 在我的代码开始:
Console.SetOut(new TextHelper());
和类:
public class TextHelper : TextWriter
{
TextWriter console;
public TextHelper() {
console = Console.Out;
}
public override Encoding Encoding { get { return this.console.Encoding; } }
public override void WriteLine(string format, params object[] arg)
{
string s = string.Format(format, arg);
WriteLine(s);
}
public override void Write(object value)
{
console.Write(value);
System.Diagnostics.Trace.Write(value);
}
public override void WriteLine(object value)
{
Write(value);
Write("\n");
}
public override void WriteLine(string value)
{
console.WriteLine(value);
System.Diagnostics.Trace.WriteLine(value);
}
}
请注意:我只是重写我需要的东西,所以如果你写其他类型的,你应该覆盖更多
相反,可以收集测试结果的输出。
您不能提供输入,但可以很容易地提供具有不同的命令行参数多次试验,每个试验中收集输出。
如果你的目标是调试,这是提供一个可重复的调试方案的省力的方式。
namespace Commandline.Test
{
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class CommandlineTests
{
[TestMethod]
public void RunNoArguments()
{
Commandline.Program.Main(new string[0]);
}
}
}
步骤1:在项目名称在解决方案浏览器点击右键然后进行输出类型作为窗口应用程序
步骤2:调试 - >选项..-->调试(展开) - >常规 - >重定向所有输出窗口的文本即时窗口