시작 구성 파일 검사
- 11분
Visual Studio Code가 launch.json 파일을 사용하여 디버거를 구성하는 것을 이미 살펴보았습니다. 간단한 C# 콘솔 애플리케이션을 만드는 경우 Visual Studio Code에서 코드를 성공적으로 디버그하는 데 필요한 모든 정보가 포함된 launch.json 파일을 생성할 수 있습니다. 그러나 시작 구성을 수정해야 하는 경우가 있으므로 시작 구성의 특성을 이해하는 것이 중요합니다.
시작 구성의 특성
launch.json 파일에는 configurations 목록에 하나 이상의 시작 구성이 포함됩니다. 시작 구성은 특성을 사용하여 다양한 디버깅 시나리오를 지원합니다. 다음 특성은 모든 시작 구성에 필수입니다.
-
name: 시작 구성에 할당된 읽기 권한자 이름입니다. -
type: 시작 구성에 사용할 디버거의 유형입니다. -
request: 시작 구성의 요청 유형입니다.
이 섹션에서는 발생할 수 있는 특성 중 일부를 정의합니다.
이름
이 특성은 name 시작 구성의 표시 이름을 지정합니다. 할당된 name 값은 실행 구성 드롭다운(실행 및 디버그 보기의 맨 위에 있는 제어판)에 표시됩니다.
유형
이 특성은 type 시작 구성에 사용할 디버거 유형을 지정합니다. 값 codeclr 은 .NET 5+ 애플리케이션(C# 애플리케이션 포함)의 디버거 유형을 지정합니다.
요청
이 특성은 request 시작 구성에 대한 요청 유형을 지정합니다. 현재 값 launch 및 attach 지원됩니다.
PreLaunchTask (사전 실행 작업)
이 특성은 preLaunchTask 프로그램을 디버깅하기 전에 실행할 작업을 지정합니다. 작업 자체는 launch.json 파일과 함께 폴더에 .vscode 있는 tasks.json 파일에서 찾을 수 있습니다. 애플리케이션을 실행하기 전에 build 명령을 실행하는 사전 작업을 dotnet build로 지정합니다.
프로그램
program 이 특성은 시작할 애플리케이션 dll 또는 .NET 호스트 실행 파일의 경로로 설정됩니다.
이 속성은 일반적으로 다음과 같은 형식 ${workspaceFolder}/bin/Debug/<target-framework>/<project-name.dll>을 사용합니다.
위치:
-
<target-framework>는 디버그 프로젝트가 빌드되는 프레임워크입니다. 이 값은 일반적으로 프로젝트 파일에서 'TargetFramework' 속성으로 찾습니다. -
<project-name.dll>는 디버그된 프로젝트의 빌드 출력 dll의 이름입니다. 이 속성은 일반적으로 프로젝트 파일 이름과 동일하지만 '.dll' 확장명을 사용합니다.
예: ${workspaceFolder}/bin/Debug/net10.0/Debug101.dll
비고
.dll 확장명은 이 파일이 dll(동적 링크 라이브러리) 파일임을 나타냅니다. 프로젝트 이름이 Debug101이면 빌드 태스크가 Program.cs 및 Debug101.csproj 파일을 사용하여 프로그램을 컴파일할 때Debug101.dll이름이 지정된 파일이 만들어집니다. "bin" 및 "Debug" 폴더를 확장한 다음 코드 프로젝트에서 사용하는 .NET Framework를 나타내는 폴더(예: "net10.0")를 열어 탐색기 보기에서 Debug101.dll파일을 찾을 수 있습니다. .NET Framework 버전은 .csproj 파일에 지정됩니다.
Cwd
특성은 cwd 대상 프로세스의 작업 디렉터리를 지정합니다.
인수
이 특성은 args 시작 시 프로그램에 전달되는 인수를 지정합니다. 기본적으로 인수는 없습니다.
콘솔
이 특성은 console 애플리케이션이 시작될 때 사용되는 콘솔 유형을 지정합니다. 옵션은 internalConsole, integratedTerminal 및 externalTerminal입니다. 기본 설정은 internalConsole입니다. 콘솔 유형은 다음과 같이 정의됩니다.
- 이 설정은
internalConsoleVisual Studio Code 편집기 아래의 패널 영역에 있는 DEBUG 콘솔 패널에 해당합니다. - 이 설정은
integratedTerminalVisual Studio Code 편집기 아래의 패널 영역에 있는 출력 패널에 해당합니다. - 이 설정은
externalTerminal외부 터미널 창에 해당합니다. Windows와 함께 제공되는 명령 프롬프트 애플리케이션은 터미널 창의 예입니다.
중요합니다
디버그 콘솔 패널은 콘솔 입력을 지원하지 않습니다. 예를 들어 애플리케이션에 Console.ReadLine() 문이 포함된 경우 DEBUG CONSOLE을 사용할 수 없습니다. 사용자 입력 console 을 읽는 C# 콘솔 애플리케이션에서 작업하는 경우 설정을 하나 integratedTerminal 또는 externalTerminal.로 설정해야 합니다. 콘솔에 쓰지만 콘솔에서 입력을 읽지 않는 콘솔 애플리케이션은 세 console 가지 설정 중에서 사용할 수 있습니다.
항목 입력 시 중지
대상의 진입점에서 중지해야 하는 경우, 필요에 따라 stopAtEntry을(를) true으로 설정할 수 있습니다.
시작 구성 편집
시작 구성 파일을 사용자 지정해야 할 수 있는 많은 시나리오가 있습니다. 이러한 시나리오의 대부분은 고급 또는 복잡한 프로젝트 시나리오를 포함합니다. 이 모듈에서는 시작 구성 파일을 업데이트해야 하는 두 가지 간단한 시나리오에 중점을 둡니다.
- C# 콘솔 애플리케이션은 콘솔에서 입력을 읽습니다.
- 프로젝트 작업 영역에는 둘 이상의 애플리케이션이 포함됩니다.
콘솔 입력을 수용하도록 시작 구성 업데이트
앞에서 읽은 것처럼 DEBUG 콘솔 패널은 콘솔 입력을 지원하지 않습니다. 사용자 입력을 사용하는 콘솔 애플리케이션을 디버깅하는 경우 시작 구성에 연결된 console 속성을 업데이트해야 합니다.
console 속성을 편집하려면 다음을 수행합니다.
Visual Studio Code 편집기에서 launch.json 파일을 엽니다.
콘솔 특성을 찾습니다.
콜론 및 할당된 값을 선택한 다음 콜론 문자를 입력합니다.
기존 정보를 콜론으로 덮어쓰면 Visual Studio Code IntelliSense는 드롭다운 목록에 세 가지 옵션을 표시합니다.
integratedTerminal 또는 externalTerminal을 선택합니다.
launch.json 파일을 저장합니다.
여러 애플리케이션을 수용하도록 시작 구성 업데이트
작업 영역에 시작 가능한 프로젝트가 하나만 있는 경우 C# 확장은 launch.json 파일을 자동으로 생성합니다. 둘 이상의 시작 가능한 프로젝트가 있는 경우 launch.json 파일을 수동으로 수정해야 합니다. Visual Studio Code는 업데이트할 수 있는 기본 템플릿을 사용하여 launch.json 파일을 생성합니다. 이 시나리오에서는 디버그하려는 각 애플리케이션에 대해 별도의 구성을 만듭니다. 빌드 작업과 같은 사전 실행 작업은 tasks.json 파일에 만들 수 있습니다.
여러 콘솔 애플리케이션을 포함하는 코딩 프로젝트에서 작업하고 있다고 가정해 보겠습니다. 루트 프로젝트 폴더 인 SpecialProjects는 코드에서 작업할 때 Visual Studio Code에서 여는 작업 영역 폴더입니다. 개발 중인 두 개의 애플리케이션인 Project123 및 Project456이 있습니다. RUN 및 DEBUG 보기를 사용하여 애플리케이션을 디버그합니다. 사용자 인터페이스에서 디버깅하는 애플리케이션을 선택하려고 합니다. 또한 애플리케이션에 디버거를 연결하기 전에 저장된 코드 업데이트를 컴파일하려고 합니다.
launch.json 및 tasks.json 파일을 업데이트하여 이 시나리오에 대한 요구 사항을 달성할 수 있습니다.
다음 스크린샷은 Project123 및 Project456을 포함하는 탐색기 보기 및 폴더 구조를 보여줍니다.
.vscodelaunch.json 및 tasks.json 파일이 포함된 폴더는 개별 프로젝트 폴더가 아닌 작업 영역 폴더인 SpecialProjects와 연결됩니다.
다음 예제에서는 "Project123" 및 "Project456" 애플리케이션 모두에 대한 구성을 포함하도록 launch.json 파일을 구성하는 방법을 보여 줍니다.
"version": "0.2.0",
"configurations": [
{
"name": "Launch Project123",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "buildProject123",
"program": "${workspaceFolder}/Project123/bin/Debug/net10.0/Project123.dll",
"args": [],
"cwd": "${workspaceFolder}/Project123",
"console": "internalConsole",
"stopAtEntry": false
},
{
"name": "Launch Project456",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "buildProject456",
"program": "${workspaceFolder}/Project456/bin/Debug/net10.0/Project456.dll",
"args": [],
"cwd": "${workspaceFolder}/Project456",
"console": "internalConsole",
"stopAtEntry": false
}
]
이름, preLaunchTask 및 프로그램 필드는 모두 특정 애플리케이션에 대해 구성됩니다.
이름 특성은 RUN 및 DEBUG 뷰 사용자 인터페이스에 표시되는 선택 가능한 시작 옵션을 지정합니다. 프로그램 특성은 애플리케이션의 경로를 지정합니다. preLaunchTask 특성은 디버거를 시작하기 전에 수행되는 작업의 이름을 지정하는 데 사용됩니다. tasks.json 파일에는 명명된 작업과 작업을 완료하는 데 필요한 정보가 포함됩니다.
다음 예제에서는 tasks.json 파일을 구성하는 방법을 보여줍니다. 이 경우 명명된 작업은 "Project123" 및 "Project456" 애플리케이션과 관련된 빌드 작업을 지정합니다. 빌드 작업을 수행하면 저장된 모든 편집 내용이 컴파일되고 디버거에 연결된 해당 .dll 파일에 표시됩니다.
"version": "2.0.0",
"tasks": [
{
"label": "buildProject123",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Project123/Project123.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "buildProject456",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Project456/Project456.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
}
]
launch.json 및 tasks.json 파일에 대한 업데이트가 준비되면 실행 및 디버그 보기에 Project123 또는 Project456 애플리케이션을 디버깅하기 위한 시작 옵션이 표시됩니다. 다음 스크린샷은 시작 구성 드롭다운에 표시되는 시작 구성의 이름을 보여 줍니다.
요약
이 단원에서 기억해야 할 두 가지 중요한 사항은 다음과 같습니다.
- 시작 구성은
name,type,request,preLaunchTask,program, 및console같은 특성을 지정하는 데 사용됩니다. - 개발자는 프로젝트 요구 사항을 수용하기 위해 시작 구성을 편집할 수 있습니다.