[C#] 콘솔 대신 Visual Studio에 콘솔 응용 프로그램의 출력이 있음
Eclipse를 사용하여 Java에서 콘솔 응용 프로그램을 수행 할 때 Visual Studio 에서처럼 콘솔이 팝업되는 대신 IDE 자체의 텍스트 상자에 출력이 표시되는 것을 볼 수 있습니다. 이것은 프로그램이 종료 된 후에도 다시 실행할 때까지 지워지지 않기 때문에 그 안에 쓰여진 텍스트를 잘 사용할 수 있기 때문에 편리합니다. Visual Studio로 이와 같은 것을 달성 할 수 있습니까? 하는 대신 알아
System.Console.WriteLine(str);
내가 할 수있는
System.Diagnostics.Debug.WriteLine(str);
그러나로드 된 모든 심볼과 같은 출력 창에 많은 “정크”가 표시되므로 동일한 것은 아닙니다.
더 좋은 점은 콘솔을 실행하는 대신 애플리케이션을 실행할 때 IDE 자체에서 모든 작업을 수행 할 수 있다는 것입니다.
답변
도구-> Visual Studio 옵션 대화 상자-> 디버깅-> “모든 출력 창 텍스트를 직접 실행 창으로 리디렉션”을 선택합니다.
답변
에서 비주얼 스튜디오 옵션 대화 상자 -> 디버깅 ->은 “직접 실행 창에 리디렉션 모든 출력 창 텍스트”를 확인합니다. 그런 다음 프로젝트 설정으로 이동하여 유형을 “콘솔 응용 프로그램”에서 “Windows 응용 프로그램”으로 변경합니다. 이 시점에서 Visual Studio는 더 이상 콘솔 창을 열지 않으며 출력은 Visual Studio의 출력 창으로 리디렉션됩니다. 그러나 키 또는 텍스트 입력을 요청하거나 콘솔을 지우는 것과 같은 “창의적인”작업을 수행 할 수 없습니다. 런타임 예외가 발생합니다.
답변
연결하는 리스너에 따라 추적 출력은 디버그 창, 콘솔, 파일, 데이터베이스 또는 한 번에 모두 이동할 수 있습니다. 자체 TraceListener를 구현하는 것이 매우 간단하기 때문에 가능성은 말 그대로 무한합니다.
답변
Visual Studio의 최신 릴리스를 확인할 때입니다. 전에는 작동하지 않았던 가장 제안 된 솔루션이 지금 작동 할 수 있습니다.
Visual Studio 2017 ( 릴리스 버전 15.4.2 이상)에서는 Tools > Options > Debugging > General > (Check Box) Redirect all Output Window text to Immediate Window
에서 저에게 효과적 이었습니다.
참고 사항 : 1. 직접 실행 창을 보려면 디버깅 모드 에 있는지 확인하십시오 . 2. 다음과 같이 3 개의 다른 디버깅 도구, 즉 Call Stack, Breakpoints 및 Command Window를 사용할 수 있습니다.
최고의 소원!
답변
실제 앱을 직접 실행하는 대신 실행하는 래퍼 애플리케이션을 만들 수 있습니다. 래퍼 애플리케이션은 stdout을 수신하고 모든 것을 Trace로 리디렉션 할 수 있습니다. 그런 다음 실행 설정을 변경하여 래퍼를 시작하고 실행할 실제 앱의 경로를 전달합니다.
디버거가 래퍼에 연결된 경우 래퍼가 디버거를 새 프로세스에 자동 연결하도록 할 수도 있습니다.
답변
나는 이것이 또 다른 대답 일 뿐이라는 것을 알고 있지만 “Windows 응용 프로그램으로 변경”부분에 대해 혼란 스러울 수있는 새로운 웹 개발자를 위해 무언가를 적어 둘 것이라고 생각했습니다. 기본적으로 Visual Studio 2013의 MVC 응용 프로그램이라고 생각하기 때문입니다. 기본값은 클래스 라이브러리의 출력 유형입니다.
내 웹 애플리케이션은 기본적으로 “클래스 라이브러리”의 출력 유형으로 설정됩니다. 그것을 변경할 필요가 없습니다. 내가해야 할 일은 도구> 옵션> 디버깅> 모든 출력 창 텍스트를 직접 실행 창으로 리디렉션하는 제안을 따르는 것입니다. 그런 다음 System.Diagnostics.Trace
위의 Joel Coehoorn 의 제안 을 사용했습니다 .
답변
나를 위해 작동하는 간단한 솔루션은 콘솔 기능 (ReadKey, String with Format 및 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);
}
}
참고 : 필요한 것만 재정의하므로 다른 유형을 작성하는 경우 더 재정의해야합니다.