콘솔 대신 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를 구현하는 것이 매우 간단하므로 가능성은 문자 그대로 끝이 없습니다.
디버깅 설정 창에서 " Redirect All Output ... "체크 박스를 체크하십시오 :
실제 앱을 직접 실행하는 대신 실행하는 랩퍼 애플리케이션을 작성할 수 있습니다. 랩퍼 응용 프로그램은 stdout을 청취하고 모든 것을 Trace로 경로 재 지정할 수 있습니다. 그런 다음 실행 설정을 변경하여 래퍼를 시작하고 실행할 실제 앱의 경로를 전달하십시오.
디버거가 랩퍼에 연결된 경우 랩퍼가 디버거를 새 프로세스에 자동 첨부하도록 할 수도 있습니다.
나는 이것이 또 다른 대답이라는 것을 알고 있지만 기본적으로 Visual Studio 2013의 MVC 응용 프로그램을 생각하기 때문에 "Windows 응용 프로그램으로 변경"부분에 대해 혼란 스러울 수있는 새로운 웹 개발자를 위해 뭔가 적어 놓을 것이라고 생각했습니다. 기본적으로 출력 유형은 클래스 라이브러리입니다.
기본적으로 내 웹 응용 프로그램은 "클래스 라이브러리"의 출력 유형으로 설정됩니다. 변경할 필요가 없습니다. 내가해야 할 일은 도구> 옵션> 디버깅> 모든 출력 창 텍스트를 즉시 창으로 리디렉션하는 제안을 따르는 것입니다. 그런 다음 System.Diagnostics.Trace
위에서 Joel Coehoorn 의 제안 을 사용했습니다 .
콘솔 기능 (ReadKey, String with Format and 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]);
}
}
}
이제 Visual Studio의 최신 릴리스를 확인할 차례입니다. 이전에 일부 사용자에게는 효과가 없었던 가장 제안 된 솔루션이 지금 작동 할 수 있습니다.
In Visual Studio 2017 (Release Version 15.4.2 and above), going to Tools > Options > Debugging > General > (Check Box) Redirect all Output Window text to Immediate Window
has worked for me.
Few Notes: 1. To see the Immediate Window, make sure that you are in Debugging mode. 2. There should now be 3 other debugging tools available at your disposal, namely, Call Stack, Breakpoints, and Command Window, as shown below:
Best wishes!
Step 1: Right click on the Project Name in Solution Explorer then make the Output type as Window Application
Step 2: Debug-->Options..-->Debugging (Expand)-->General-->Redirect All Output Window Text to the Immediate Window
'IT박스' 카테고리의 다른 글
기본적으로 HTML 선택 비활성화 옵션을 표시하는 방법은 무엇입니까? (0) | 2020.08.03 |
---|---|
쉘에서 파일 크기 (바이트)를 얻는 휴대용 방법? (0) | 2020.08.03 |
비 블로킹 I / O가 멀티 스레드 차단 I / O보다 실제로 빠릅니까? (0) | 2020.08.02 |
SASS.js가 있습니까? (0) | 2020.08.02 |
별도의 개발자 및 제품 Firebase 환경 (0) | 2020.08.02 |