Share via


진단 메시지에 대한 MSBuild 및 Visual Studio 형식

일부 텍스트를 출력하는 도구가 실행되면 MSBuild는 텍스트에 오류 및 경고가 있는지 검사합니다. 많은 도구는 알려진 형식을 사용하여 이러한 메시지를 보고합니다. 기본적으로 MSBuild는 텍스트를 검사하고 출력에 기반하여 오류 및/또는 경고를 보고합니다. 이 동작은 Exec 작업에서 IgnoreStandardErrorWarningFormat, CustomErrorRegularExpressionCustomWarningRegularExpression 매개 변수를 사용하여 변경하거나 비활성화할 수 있습니다.

참고 항목

사용자 고유의 정규식을 사용하여 오류 및 경고를 감지하려고 하면 MSBuild가 결과를 한 번에 한 줄씩 확인한다는 것을 알아야 합니다. 사용자 지정 regex가 여러 줄에 걸쳐 있는 항목과 일치하더라도, MSBuild가 해당 텍스트를 처리하는 방식 때문에 그렇게 동작하지 않습니다.

MSBuild 및 Microsoft Visual Studio에서 모두 올바르게 형식화되고 인식되는 다음 네 가지 메시지를 살펴보세요.

Main.cs(17,20): warning CS0168: The variable 'x' is declared but never used
C:\dir1\strings.resx(2) : error BC30188: Declaration expected.
cl : Command line warning D4024 : unrecognized source file type 'file1.cs', object . . .
error CS0006: Metadata file 'System.dll' could not be found.

이러한 메시지는 여기에 표시된 특수 다섯 파트를 따릅니다. 이러한 파트의 순서는 중요하며 변경해서는 안 됩니다.

Origin : SubcategoryCategoryCode : Text

예를 들면 다음과 같습니다.

c1 : Command line warning D4024 : unrecognized source file type 'test.xyz'

Origin: c1
Subcategory: Command line
Category: warning
Code: D4024
Text: unrecognized source file type 'test.zyz'

이 형식의 각 구성 요소는 다음과 같이 설명됩니다.

  • 원본(필수) 원본은 비워 둘 수 있습니다. 있다면 원본은 일반적으로 예제 중 하나에서 cl과 같은 도구 이름입니다. 그러나 다른 예제에 표시된 "Main.cs"와 같은 파일 이름일 수도 있습니다. 파일 이름인 경우 절대 또는 상대 파일 이름이어야 하며 다음 양식 중 하나에서 괄호로 묶인 줄/열 정보가 선택적으로 지정됩니다.

    (line) or (line-line) or (line-col) or (line,col-col) or (line,col,line,col)
    

    줄과 열은 파일에서 1부터 시작합니다. 즉, 파일의 시작은 1이고 맨 왼쪽 열은 1입니다. 원본이 도구 이름이면 로캘에 따라 변경되지 않아야 합니다. 즉, 로캘 중립적이어야 합니다.

  • 하위 범주(선택 사항) 하위 범주는 범주 자체를 세부 분류하는 데 사용되고, 지역화되지 않아야 합니다.

  • 범주(필수) 범주는 “오류” 또는 “경고”여야 합니다. 대/소문자는 문제는 중요하지 않습니다. 원본에서처럼, 범주도 지역화되어선 안됩니다.

  • 코드(선택 사항) 애플리케이션별 오류 코드/경고 코드를 식별하는 코드입니다. 코드는 지역화해서는 안 되며 공백을 포함하지 않아야 합니다.

  • 텍스트 오류를 설명하는 사용자에게 친숙한 텍스트이며, 여러 로캘에 공급하는 경우 지역화되어야 합니다.

MSBuild가 명령줄 도구(예: csc.exe 또는 vbc.exe)를 호출할 때 도구에서 표준 출력 및 표준 오류 스트림으로 내보낸 출력을 살펴봅니다. 방금 설명한 오류 형식과 일치하는 모든 줄은 특별히 처리됩니다. 즉, 오류 또는 경고로 인식되는 줄은 각각 빌드 오류 및 경고로 바뀝니다. 이것의 실제 혜택을 보려면 Visual Studio 또는 VS Code와 같은 개발 도구 내에서 빌드해야 합니다. MSBuild는 이러한 메시지를 특별히 처리하므로, Visual Studio 작업 목록에서 일류 경고 및 오류로 기록됩니다. 원본에서 줄/열 정보를 지정하는 경우 메시지를 두 번 클릭하면 잘못된 파일의 오류 원본으로 안내됩니다.