다음을 통해 공유


컴파일러 경고 표시 안 함

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

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

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

주의

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

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

빌드 속성을 사용하여 전체 C# 및 F# 프로젝트에 대한 특정 경고를 표시하지 않습니다. C#에서 코드의 특정 부분에서만 경고를 표시하지 않으려면 #pragma 경고를 사용합니다. 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. 솔루션 탐색기에서 프로젝트의 오른쪽 클릭 또는 바로 가기 메뉴를 열고 편집 <ProjectName>.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 컴파일러 옵션을 참조하세요.

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

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

또한 Visual Studio 2019 버전 16.7 이하에서는 컴파일러 이외의 도구에서 발생하는 일부 경고를 다른 방법으로 표시하지 않을 수 있습니다.

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

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

    다음 코드는 비표시된 경고 목록에 경고 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 패키지를 선택합니다.

    Screenshot of NuGet package in Solution Explorer.

    Screenshot of NuGet package in Solution Explorer.

  2. 오른쪽 클릭 메뉴 또는 상황에 맞는 메뉴에서 속성을 선택합니다.

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

    NuGet package properties

    Screenshot of NuGet package properties

    솔루션 탐색기오류 목록에서 경고가 사라집니다. 프로젝트 파일에서 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 진단 메시지는 코드 분석 위반 및 경고이며, 이 문서에서 설명하는 컴파일러 경고와는 다릅니다. 규칙 구성 파일을 사용하여 사이트별 태그 및 프로젝트 전체 또는 전역을 사용하는 등 다양한 방법으로 코드 분석 경고를 표시하지 않을 수 있습니다. 코드 분석 경고 표시 안 함 및 코드 분석 위반 억제를 참조하세요.