다음을 통해 공유


컴파일러 경고 표시 안 함

Visual Studio를 사용하면 프로젝트 디자이너(프로젝트 속성 페이지)에서 경고 코드를 지정하여 표시하지 않을 경고를 지정할 수 있습니다. 한 위치에서만 경고를 표시하지 않으려면 프로젝트 파일, 명령줄 또는 코드에서 특정 속성을 직접 설정하여 경고를 표시하지 않을 수도 있습니다.

일부 컴파일러 및 빌드 도구에는 경고 수준을 지정하는 옵션도 있습니다. 이렇게 하면 하나의 설정으로 경고 범주를 제어할 수 있습니다. 이러한 옵션은 사용 중인 특정 언어 및 컴파일러에 대한 설명서를 참조하세요.

빌드 로그에서 더 간결하고 집중된 출력을 확인하는 것이 목표인 경우 빌드 로그 세부 정보를 변경할 수 있습니다. 사용 가능한 설정은 표준, 상세, 또는 진단입니다. 자세한 내용은 자세히 보기, 저장 및 구성 방법: 빌드 로그 파일을 참조하세요.

주의

경고는 코드에 잠재적인 문제를 나타내기 위한 것이므로 특정 경고를 사용하지 않도록 설정하는 위험을 이해해야 합니다. Visual Studio 설정은 프로젝트 수준에서 경고를 사용하지 않도록 설정합니다. Visual Studio에서 제공하는 것보다 더 많은 대상 접근 방식을 사용하여 경고를 사용하지 않도록 설정하는 것이 좋습니다. 대부분의 컴파일러는 특정 코드 줄에만 경고를 사용하지 않도록 설정하는 방법을 제공하므로 동일한 프로젝트의 다른 위치에서 발생하는 경우 경고를 계속 검토할 수 있습니다.

Visual C# 또는 F에 대한 특정 경고 표시 안 함#

Build 속성을 사용하여 전체 C# 및 F# 프로젝트에 대한 특정 경고를 표시하지 않습니다. C#에서 코드의 특정 부분에서만 경고를 억제하려면 #pragma warning 를 사용하십시오. F#의 경우 #nowarn 전처리기 지시문을 사용하여 전체 소스 파일에 대한 경고를 사용하지 않도록 설정합니다.

  1. 솔루션 탐색기경고를 표시하지 않을 프로젝트를 선택합니다.

  2. 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 속성 선택합니다. 또는 프로젝트 노드를 선택하고 Alt+Enter누릅니다.

  3. 빌드을 선택하고 오류 및 경고 하위 섹션으로 이동합니다.

  4. 경고 표시 안 함 또는 특정 경고 표시 안 함 상자에서 표시하지 않으려는 경고의 오류 코드를 세미콜론으로 구분하여 지정합니다. 경고 코드에 대한 목록 및 설명은 C# 컴파일러 메시지 참조하세요.

  5. 솔루션을 다시 빌드합니다.

  1. 솔루션 탐색기경고를 표시하지 않을 프로젝트를 선택합니다.

  2. 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 속성 선택합니다. 또는 프로젝트 노드를 선택하고 Alt+Enter누릅니다.

  3. 빌드 페이지 또는 섹션을 선택하고, 현재 UI에 있는 경우 오류 및 경고 하위 섹션을 엽니다.

  4. 경고 표시 안 함 또는 특정 경고 표시 안 함 상자에서 표시하지 않으려는 경고의 오류 코드를 세미콜론으로 구분하여 지정합니다. 경고 코드에 대한 목록 및 설명은 C# 컴파일러 메시지 참조하세요.

  5. 솔루션을 다시 빌드합니다.

메모

일부 경고는 억제할 수 없습니다. 이러한 목록은 NoWarn 컴파일러 옵션참조하세요.

C++에 대한 특정 경고 표시 안 함

프로젝트 속성을 사용하여 C++ 프로젝트에서 경고를 표시하지 않을 수 있습니다. 구성 속성 속성 페이지를 사용하여 전체 C++ 프로젝트에 대한 특정 경고를 표시하지 않습니다. #pragma warning사용하여 특정 파일에서 경고를 표시하지 않을 수도 있습니다. 이 문서에서는 프로젝트 수준 컨트롤에 대해 설명하지만, 특정 파일이나 몇 줄의 코드에서 경고를 사용하지 않도록 설정하려고 하지만 동일한 경고가 계속 발생하는 것을 계속 확인하려는 경우 #pragma warning사용하는 것이 좋습니다. #pragma 경고을 참조하세요.

  1. 솔루션 탐색기경고를 표시하지 않을 프로젝트 또는 원본 파일을 선택합니다.

  2. 메뉴 모음에서 보기>속성 페이지선택하세요.

  3. 구성 속성 범주를 선택하고 C/C++ 범주를 선택한 다음 고급 페이지를 선택합니다.

  4. 다음 단계 중 하나를 수행합니다.

    • 특정 경고 사용 안 함 상자에서 표시하지 않으려는 경고의 오류 코드를 세미콜론으로 구분하여 지정합니다.

    • 특정 경고 사용 안 함 상자에서 편집을 선택하면 추가 옵션이 표시됩니다.

  5. 확인 단추를 선택한 다음 솔루션을 다시 빌드합니다.

경고가 다른 도구의 경고인 경우 특정 도구에 대한 설명서를 참조하여 해당 도구에 대한 경고를 표시하지 않는 방법을 알아보세요. 예를 들어 C++ 링커에는 /IGNORE 링커 옵션을 사용하여 사용하지 않도록 설정할 수 있는 몇 가지 경고가 있습니다. /IGNORE(특정 경고 무시) 참조하고 이 옵션을 설정하려면 /link(링커에 옵션 전달)참조하세요.

Visual Basic에 대한 경고 표시 안 함

프로젝트의 .vbproj 파일을 편집하여 Visual Basic에 대한 특정 컴파일러 경고를 숨길 수 있습니다. 범주의경고를 억제하려면 컴파일 속성 페이지를 사용할 수 있습니다. 코드 파일의 특정 부분에서 경고를 사용하지 않도록 설정하려면 #Disable 및 #Enable 지시문사용합니다. 자세한 내용은 Visual Basic경고 구성을 참조하세요.

전체 Visual Basic 프로젝트에 대한 특정 경고를 표시하지 않는 경우

이 예제에서는 .vbproj 파일을 편집하여 특정 컴파일러 경고를 표시하지 않는 방법을 보여 줍니다.

  1. 솔루션 탐색기경고를 표시하지 않을 프로젝트를 선택합니다.

  2. 메뉴 모음에서 프로젝트>언로드 프로젝트를 선택합니다.

  3. 솔루션 탐색기에서 프로젝트의 마우스 오른쪽 버튼을 클릭하거나 바로 가기 메뉴를 열고 편집 <>.vbproj를 선택합니다.

    코드 편집기에서 XML 프로젝트 파일이 열립니다.

  4. 빌드할 빌드 구성의 <NoWarn> 요소를 찾고 하나 이상의 경고 번호를 <NoWarn> 요소의 값으로 추가합니다. 여러 경고 번호를 지정하는 경우 쉼표로 구분합니다.

    다음 예제는 두 개의 컴파일러 경고가 억제된 상태로 x86 플랫폼에서 디버그 빌드 구성에 대한 <NoWarn> 요소를 보여줍니다.

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
        <PlatformTarget>x86</PlatformTarget>
        <DebugSymbols>true</DebugSymbols>
        <DebugType>full</DebugType>
        <Optimize>false</Optimize>
        <OutputPath>bin\Debug\</OutputPath>
        <DefineDebug>true</DefineDebug>
        <DefineTrace>true</DefineTrace>
        <ErrorReport>prompt</ErrorReport>
        <NoWarn>40059,42024</NoWarn>
        <WarningLevel>1</WarningLevel>
      </PropertyGroup>
    

    메모

    .NET Core 프로젝트에는 기본적으로 빌드 구성 속성 그룹이 포함되어 있지 않습니다. .NET Core 프로젝트에서 경고를 억제하려면 빌드 설정 섹션을 파일에 수동으로 추가해야 합니다. 예를 들어:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp2.0</TargetFramework>
        <RootNamespace>VBDotNetCore_1</RootNamespace>
      </PropertyGroup>
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
        <NoWarn>42016,41999,42017</NoWarn>
      </PropertyGroup>
    </Project>
    
  5. 변경 내용을 .vbproj 파일에 저장합니다.

  6. 메뉴 모음에서 프로젝트>다시 로드를 선택합니다.

  7. 메뉴 바에서 빌드>솔루션 다시 빌드를 선택합니다.

    출력 창에는 지정한 경고가 더 이상 표시되지 않습니다.

자세한 내용은 Visual Basic 명령줄 컴파일러에 대한 /nowarn 컴파일러 옵션 참조하세요.

개별 경고 또는 범주별로 경고를 표시하지 않을 수 있습니다. 환경은 .NET Framework 프로젝트 또는 .NET Core(또는 .NET 5 이상) 프로젝트로 작업하는지 여부에 따라 다릅니다.

코드 파일의 특정 부분에서 경고를 사용하지 않도록 설정하려면 #Disable 및 #Enable 지시문사용합니다. 자세한 내용은 Visual Basic경고 구성을 참조하세요.

.NET 5 이상 프로젝트

프로젝트 파일을 편집하여 진단 코드에서 특정 컴파일러 경고를 표시하지 않거나 프로젝트 디자이너를 사용하여 범주별 경고를 표시하지 않을 수 있습니다. 프로젝트 디자이너를 열려면 프로젝트 노드를 선택하고 마우스 오른쪽 단추를 클릭하고 속성선택하거나 Alt+Enter누릅니다.

컴파일 섹션에서 경고을 선택합니다. 경고 심각도의 경우, 개별적으로 경고 심각도를 설정할 수 있습니다. 범주가 표시되고 각 범주를 없음으로 설정하여 경고 메시지를 비활성화하거나, 경고 또는 오류로 설정하여 경고 또는 오류로 사용할 수 있습니다.

visual Basic .NET 프로젝트에 대한 경고 심각도 설정을 보여 주는 스크린샷

.NET Framework 프로젝트

프로젝트의 .vbproj 파일을 편집하여 Visual Basic에 대한 특정 컴파일러 경고를 숨길 수 있습니다. 범주 경고를 표시하지 않으면 컴파일 속성 페이지사용할 수 있습니다.

전체 Visual Basic 프로젝트에 대한 특정 경고를 표시하지 않는 경우

이 예제에서는 .vbproj 파일을 편집하여 특정 컴파일러 경고를 표시하지 않는 방법을 보여 줍니다.

  1. 솔루션 탐색기경고를 표시하지 않을 프로젝트를 선택합니다.

  2. (.NET) 프로젝트 노드를 두 번 클릭하여 프로젝트 파일을 엽니다.

    (.NET Framework) 메뉴 모음에서 프로젝트>를 언로드하십시오. 그런 다음 솔루션 탐색기에서 프로젝트의 오른쪽 클릭 또는 바로 가기 메뉴를 열고, 그 다음 프로젝트 이름 <.vbproj>편집을 선택합니다.

    MSBuild 프로젝트 파일이 코드 편집기에서 열립니다. XML 파일입니다.

  3. 빌드할 빌드 구성의 <NoWarn> 요소를 찾고 하나 이상의 경고 번호를 <NoWarn> 요소의 값으로 추가합니다. 여러 경고 번호를 지정하는 경우 쉼표로 구분합니다.

    다음 예제는 x86 플랫폼에서 디버그 빌드 구성에 대해 두 개의 컴파일러 경고가 억제된 상태의 <NoWarn> 요소를 보여 줍니다.

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
        <PlatformTarget>x86</PlatformTarget>
        <DebugSymbols>true</DebugSymbols>
        <DebugType>full</DebugType>
        <Optimize>false</Optimize>
        <OutputPath>bin\Debug\</OutputPath>
        <DefineDebug>true</DefineDebug>
        <DefineTrace>true</DefineTrace>
        <ErrorReport>prompt</ErrorReport>
        <NoWarn>40059,42024</NoWarn>
        <WarningLevel>1</WarningLevel>
      </PropertyGroup>
    

    메모

    .NET Core 및 .NET 5 이상 프로젝트는 기본적으로 빌드 구성 속성 그룹을 포함하지 않습니다. .NET Core 프로젝트에서 경고를 억제하려면, 빌드 구성 섹션을 파일에 수동으로 추가하세요. 예를 들어:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp2.0</TargetFramework>
        <RootNamespace>VBDotNetCore_1</RootNamespace>
      </PropertyGroup>
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
        <NoWarn>42016,41999,42017</NoWarn>
      </PropertyGroup>
    </Project>
    
  4. 변경 내용을 .vbproj 파일에 저장합니다.

  5. 메뉴 모음에서 프로젝트>다시 로드를 선택합니다.

  6. 메뉴 모음에서 빌드>솔루션 다시 빌드를 선택합니다.

    출력 창에는 지정한 경고가 더 이상 표시되지 않습니다.

자세한 내용은 Visual Basic 명령줄 컴파일러에 대한 /nowarn 컴파일러 옵션 참조하세요.

프로젝트 파일을 편집하여 경고 표시 안 함

Visual Studio 속성 디자이너를 사용하여 경고를 표시하지 않을 경우 프로젝트 파일이 변경됩니다. 때로는 프로젝트 파일을 직접 편집하여 경고를 사용하지 않도록 설정하는 작업을 수행하는 것이 더 편리할 수 있습니다. 프로젝트 파일은 Microsoft의 빌드 엔진인 MSBuild에서 처리됩니다. MSBuild을(를) 참조하세요.

또한 Visual Studio 2019 버전 16.7 이하에서는 컴파일러 이외의 도구에서 발생하는 일부 경고를 다른 방법으로 억제할 수 없습니다.

  1. Visual Studio 편집기에서 프로젝트 파일을 열려면 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 프로젝트 파일 편집을 선택합니다. 일부 프로젝트 형식에서는 프로젝트 파일을 편집하기 전에 프로젝트를 언로드해야 합니다. 프로젝트를 언로드해야 하는 경우 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 프로젝트 언로드를 선택합니다.

  2. PropertyGroup 섹션에서 NoWarn 속성을 사용합니다. 표시하지 않으려는 오류를 쉼표 또는 세미콜론으로 구분하여 나열합니다. 컴파일러 경고의 경우 언어 코드를 생략하고 숫자만 입력할 수 있지만 명확성을 위해 전체 코드를 사용하는 것이 좋습니다. 빌드의 다른 도구에서 발생하는 경고의 경우 접두사를 포함하여 전체 코드를 지정합니다(예: MSBuild 자체에서 발생한 경고에 대한 MSB).

    다음 코드는 비표시된 경고 목록에 경고 CS0028 및 CS0618을 추가합니다.

    <PropertyGroup>
       // Other properties
       <NoWarn>$(NoWarn);CS0028;CS0618</NoWarn>
    </PropertyGroup>
    

    이전 예제와 같이 이전 $(NoWarn) 값을 참조하면 해당 숫자를 덮어쓰지 않고 이전에 설정한 NoWarn값에 추가합니다.

NoWarn 참조하세요.

빌드 명령줄에서 경고 표시 안 함

명령줄에서 프로젝트를 빌드하는 경우 MSBuild 명령줄에서 -warnAsMessage 사용하여 경고를 표시하지 않을 수도 있습니다. 여러 경고 코드 목록 주위에 따옴표를 사용합니다.

MSBuild.exe -warnAsMessage="CS0028;CS0618" MyProject.csproj

MSBuild 명령줄 참조를에서 참조하세요.

디렉터리 구조의 모든 프로젝트 및 솔루션에 대한 경고 표시 안 함

msBuild 파일 Directory.Build.props사용하여 파일 시스템의 공통 디렉터리 아래에 있는 많은 프로젝트에 대한 경고를 한 번에 표시하지 않을 수 있습니다. 디렉터리별 빌드 사용자 지정을 참조하세요. 예를 들어 많은 솔루션과 프로젝트가 있는 폴더의 루트에 다음 Directory.Build.props 파일을 배치하는 경우 해당 폴더의 모든 프로젝트에 대해 지정된 경고 목록을 표시하지 않은 후 해당 폴더 내의 폴더로 재귀적으로 표시할 수 있습니다.

<Project>
   <PropertyGroup>
      <NoWarn>$(NoWarn);CS0028;CS0618</NoWarn>
   </PropertyGroup>
</Project>

도구 경고 표시 안 함

MSBuild와 같은 컴파일러 이외의 도구에서 경고를 표시하지 않는 방법은 사용 중인 프로젝트의 유형과 사용 중인 MSBuild 버전에 따라 달라집니다.

MSBuild 16.8 이상에서는 SDK 또는 표준 가져오기를 사용하는 프로젝트에서 앞에서 설명한 것과 동일한 메서드를 사용하여 도구 경고를 표시하지 않을 수 있습니다. 전체 오류 코드를 지정해야 하며, 여기에는 MSBuild의 경우 MSB 같은 접두사가 포함됩니다. 컴파일러 경고와는 달리 단순히 숫자만 사용할 수 없습니다. 또한 메시지는 제거되지 않습니다. 여전히 정보 메시지로 표시되지만 경고에서 강등되었습니다.

MSBuild 16.7 이하 및 SDK 또는 표준 가져오기를 사용하지 않는 프로젝트에서는 이러한 경고가 NoWarn을 사용하여 억제되지 않습니다. 이러한 경우 도구 경고를 표시하지 않는 데 사용할 수 있는 속성은 MSBuildWarningsAsMessages. 프로젝트 파일을 편집하거나 MSBuild 명령줄에서 MSBuildWarningsAsMessages 옵션을 지정하여 빌드 경고를 표시하지 않을 수 있습니다. MSBuildWarningsAsMessages사용하는 경우 MSB 접두사를 포함하여 전체 MSBuild 오류 코드를 사용합니다.

<PropertyGroup>
    <MSBuildWarningsAsMessages>$(MSBuildWarningsAsMessages);MSB3270</MSBuildWarningsAsMessages>
</PropertyGroup>

일부 MSBuild 경고는 MSBuildWarningsAsMessages설정으로 억제할 수 없다는 점을 주의하십시오. 사용하지 않도록 설정하려면 명령줄 옵션 warnAsMessage사용합니다.

또한 일부 경고에는 경고를 사용하지 않도록 설정할 수 있는 특정 속성이 있습니다. 예를 들어 MSB3253 속성을 설정하여 사용하지 않도록 설정됩니다.

 <PropertyGroup>
    <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
        None
    </ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
  </PropertyGroup>

가능한 경우 오류 코드 자체가 쉽게 이해할 수 없으므로 더 명시적 속성을 사용합니다. 코드의 오류 참조 페이지에는 일반적으로 사용하지 않도록 설정하는 데 사용되는 속성이 포함되어 있습니다.

NuGet 패키지에 대한 경고 표시 안 함

경우에 따라 전체 프로젝트 대신 단일 NuGet 패키지에 대해 NuGet 컴파일러 경고를 표시하지 않을 수 있습니다. 경고는 목적을 위해 제공되므로 프로젝트 수준에서 표시하지 않도록 합니다. 예를 들어 NuGet 경고 중 하나는 패키지가 프로젝트와 완전히 호환되지 않을 수 있음을 알려줍니다. 프로젝트 수준에서 표시하지 않고 나중에 추가 NuGet 패키지를 추가하면 호환성 경고가 생성되었는지 알 수 없습니다.

단일 NuGet 패키지에 대한 특정 경고를 표시하지 않는 방법

  1. 솔루션 탐색기컴파일러 경고를 표시하지 않으려는 NuGet 패키지를 선택합니다.

    솔루션 탐색기의 NuGet 패키지 스크린샷

    솔루션 탐색기의 NuGet 패키지 스크린샷

  2. 마우스 오른쪽 단추 클릭 또는 상황에 맞는 메뉴에서 속성선택합니다.

  3. 패키지 속성의 경고 표시 안 함 상자에 이 패키지에 대해 표시하지 않을 경고 번호를 입력합니다. 둘 이상의 경고를 표시하지 않으려면 쉼표로 경고 번호를 구분합니다.

    NuGet 패키지 속성

    NuGet 패키지 속성의 스크린샷

    솔루션 탐색기에서 경고가 사라지고 오류 목록에서 사라집니다. 프로젝트 파일에서 NoWarn 속성이 설정됩니다.

     <PackageReference Include="NuGet.Build.Tasks.Pack" Version="6.2.0">
       <PrivateAssets>all</PrivateAssets>
       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
       <NoWarn>NU5104</NoWarn>
     </PackageReference>
    

코드 분석 경고 표시 안 함

코드가 CA 시작하는 진단 메시지는 코드 분석 위반 및 경고이며, 이 문서에서 설명하는 컴파일러 경고와는 다릅니다. 규칙 구성 파일을 사용하여 사이트별 태그 및 프로젝트 전체 또는 전역을 사용하는 등 다양한 방법으로 코드 분석 경고를 표시하지 않을 수 있습니다. 코드 분석 경고 표시 안 함 및 코드 분석 위반표시 안 함 참조하세요.