Derleyici uyarılarını engelleme

Visual Studio ile, Project Tasarım Aracı (proje özellik sayfaları) uyarı kodlarını belirterek hangi uyarıların gizlenmesini istediğinizi belirtebilirsiniz. Ayrıca, belirli özellikleri doğrudan proje dosyasında, komut satırı aracılığıyla veya yalnızca bir konumdaki bir uyarıyı engellemek istediğinizde kodda ayarlayarak uyarıları gizleyebilirsiniz.

Bazı derleyiciler ve derleme araçlarının uyarı düzeyini belirtme seçenekleri de vardır. Bu, uyarı kategorilerini tek bir ayar ile denetlemenizi sağlar. Bu seçenekler için, kullandığınız belirli dil ve derleyicinin belgelerine bakın:

Amacınız derleme günlüğünüzde daha kısa ve odaklanmış bir çıkış görmekse, derleme günlüğü ayrıntı düzeyini değiştirmek isteyebilirsiniz. Kullanılabilir ayarlar Normal, Ayrıntılı veya Tanılama'dır. Ayrıntı düzeyi hakkında daha fazla bilgi için bkz . Nasıl yapılır: Derleme günlüğü dosyalarını görüntüleme, kaydetme ve yapılandırma.

Dikkat

Uyarıların kodunuzla ilgili olası bir sorunun göstergesi olduğunu, dolayısıyla belirli bir uyarıyı devre dışı bırakma risklerini anlamanız gerektiğini unutmayın. Visual Studio ayarları, uyarıları proje düzeyinde devre dışı bırakır. Uyarıları devre dışı bırakmak için Visual Studio'dan daha hedefli bir yaklaşım kullanmak isteyebilirsiniz. Çoğu derleyici, uyarıları yalnızca belirli kod satırları için devre dışı bırakmanın yollarını sağlar, böylece aynı projenin başka bir yerinde meydana gelirse uyarıları yine de gözden geçirebilirsiniz.

Visual C# veya F için belirli uyarıları gizleme#

Bir C# ve F# projesinin tamamı için belirli uyarıları engellemek için Derleme özelliklerini kullanın. C# dilinde kodun yalnızca belirli bir bölümünde uyarıyı engellemek istiyorsanız, #pragma uyarıyı kullanın. F# için #nowarn önişlemci yönergesini kullanarak bir kaynak dosyanın tamamı için uyarıyı devre dışı bırakın.

  1. Çözüm Gezgini içinde uyarıları engellemek istediğiniz projeyi seçin.

  2. Proje düğümüne sağ tıklayın ve bağlam menüsünde Özellikler'i seçin. Alternatif olarak proje düğümünü seçin ve Alt+Enter tuşuna basın.

  3. Oluştur'u seçin ve Hatalar ve uyarılar alt bölümüne gidin.

  4. Uyarıları gizle veya Belirli uyarıları gizle kutusunda, gizlemesini istediğiniz uyarıların hata kodlarını noktalı virgülle ayırarak belirtin. Uyarı kodlarının listesi ve açıklamaları için bkz . C# Derleyici İletileri.

  5. Çözümü yeniden oluşturun.

  1. Çözüm Gezgini içinde uyarıları engellemek istediğiniz projeyi seçin.

  2. Proje düğümüne sağ tıklayın ve bağlam menüsünde Özellikler'i seçin. Alternatif olarak proje düğümünü seçin ve Alt+Enter tuşuna basın.

  3. Oluştur sayfasını veya bölümünü seçin ve geçerli kullanıcı arabirimindeyseniz Hatalar ve uyarılar alt bölümünü açın.

  4. Uyarıları gizle veya Belirli uyarıları gizle kutusunda, gizlemesini istediğiniz uyarıların hata kodlarını noktalı virgülle ayırarak belirtin. Uyarı kodlarının listesi ve açıklamaları için bkz . C# Derleyici İletileri.

  5. Çözümü yeniden oluşturun.

Not

Bazı uyarılar gizlenemez. Bunların listesi için bkz . NoWarn derleyici seçeneği.

C++ için belirli uyarıları gizleme

Proje özelliklerini kullanarak bir C++ projesindeki uyarıları gizleyebilirsiniz; Bir C++ projesinin tamamı için belirli uyarıları engellemek için Yapılandırma Özellikleri özellik sayfasını kullanırsınız. Ayrıca kullanarak #pragma warningbelirli dosyalardaki uyarıları gizleyebilirsiniz. Bu makalede proje düzeyi denetimi ele alınmaktadır, ancak amacınız belirli bir dosyada veya yalnızca birkaç kod satırı civarında bir uyarıyı devre dışı bırakmaksa, ancak aynı uyarının diğer oluşumlarını görmeye devam etmek istiyorsanız, kullanmayı #pragma warningdüşünmelisiniz. Bkz. #pragma uyarı.

  1. Çözüm Gezgini'da, uyarıları engellemek istediğiniz projeyi veya kaynak dosyayı seçin.

  2. Menü çubuğunda Özellik Sayfalarını Görüntüle'yi>seçin.

  3. Yapılandırma Özellikleri kategorisini seçin, C/C++ kategorisini ve ardından Gelişmiş sayfasını seçin.

  4. Aşağıdaki adımlardan birini uygulayın:

    • Belirli Uyarıları Devre Dışı Bırak kutusunda, gizlemesini istediğiniz uyarıların hata kodlarını noktalı virgülle ayırarak belirtin.

    • Belirli Uyarıları Devre Dışı Bırak kutusunda Düzenle'yi seçerek daha fazla seçenek görüntüleyin.

  5. Tamam düğmesini seçin ve çözümü yeniden oluşturun.

Uyarı başka bir araçtan geliyorsa, ilgili araçla ilgili uyarıları nasıl gizleyebileceğinizi öğrenmek için ilgili aracın belgelerine bakın. Örneğin, C++ bağlayıcısı bağlayıcı seçeneğini kullanarak /IGNORE devre dışı bırakabileceğiniz bazı uyarılar vardır. Bkz. /IGNORE (Belirli uyarıları yoksay) ve bu seçeneği ayarlamak için bkz . /link (Seçenekleri bağlayıcıya geçirme).

Visual Basic için uyarıları gizleme

Proje için .vbproj dosyasını düzenleyerek Visual Basic için belirli derleyici uyarılarını gizleyebilirsiniz. Uyarıları kategoriye göre engellemek için Derleme özellik sayfasını kullanabilirsiniz. Kod dosyasının belirli bir bölümünde uyarıyı devre dışı bırakmak istiyorsanız #Disable ve #Enable yönergelerini kullanın. Daha fazla bilgi için bkz . Visual Basic'te uyarıları yapılandırma.

Visual Basic projesinin tamamında belirli uyarıları gizleme

Bu örnek, belirli derleyici uyarılarını engellemek için .vbproj dosyasının nasıl düzenleneceğini gösterir.

  1. Çözüm Gezgini içinde uyarıları engellemek istediğiniz projeyi seçin.

  2. Menü çubuğunda Proje>Projeyi Kaldır'ı seçin.

  3. Çözüm Gezgini'da, proje için sağ tıklayın veya kısayol menüsünü açın ve ardından ProjectName.vbproj> dosyasını düzenle'yi <seçin.

    XML proje dosyası kod düzenleyicisinde açılır.

  4. Oluşturmakta <NoWarn> olduğunuz derleme yapılandırmasının öğesini bulun ve öğenin değeri <NoWarn> olarak bir veya daha fazla uyarı numarası ekleyin. Birden çok uyarı numarası belirtirseniz, bunları virgülle ayırın.

    Aşağıdaki örnekte, x86 platformunda hata ayıklama derleme yapılandırması için iki derleyici uyarısının gösterilmemiş olduğu öğesi gösterilmektedir<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>
    

    Not

    .NET Core projeleri varsayılan olarak derleme yapılandırma özellik grupları içermez. .NET Core projesindeki uyarıları engellemek için derleme yapılandırma bölümünü dosyaya el ile ekleyin. Örneğin:

    <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. Değişiklikleri .vbproj dosyasına kaydedin.

  6. Menü çubuğunda Projeyi Yeniden Yükle'yi> seçin.

  7. Menü çubuğunda Derleme Yeniden Derleme>Çözümü'ne tıklayın.

    Çıkış penceresinde artık belirttiğiniz uyarılar gösterilmedi.

Daha fazla bilgi için Visual Basic komut satırı derleyicisi için /nowarn derleyici seçeneğine bakın.

Proje dosyasını düzenleyerek uyarıyı gizleme

Uyarıları engellemek için Visual Studio özellik tasarımcısının kullanılması, proje dosyasında değişiklik olmasına neden olur. Bazen, bir uyarıyı devre dışı bırakma görevini gerçekleştirmek için proje dosyasını el ile düzenlemek daha kullanışlı olabilir. Proje dosyası, Microsoft'un derleme altyapısı olan MSBuild tarafından işlenir. Bkz. MSBuild.

Ayrıca, Visual Studio 2019 sürüm 16.7 ve önceki sürümlerinde, derleyici dışındaki araçlardan gelen bazı uyarılar başka hiçbir şekilde gizlenemez.

  1. Proje dosyasını Visual Studio düzenleyicisinde açmak için proje düğümüne sağ tıklayın ve Proje dosyasını düzenle'yi seçin. Bazı proje türleri, proje dosyasını düzenleyebilmeniz için önce projeyi kaldırmanızı gerektirir. Projeyi kaldırmanız gerekiyorsa, proje düğümüne sağ tıklayın ve Projeyi kaldır'ı seçin.

  2. Yeni PropertyGroup bir bölümde özelliğini kullanın NoWarn . Gizlemesini istediğiniz hataları virgül veya noktalı virgülle ayırarak listeleyin. Derleyici uyarıları için dil kodunu atlayabilir ve yalnızca sayıyı girebilirsiniz, ancak netlik için tam kodu kullanmanızı öneririz. Derlemedeki diğer araçlardan gelen uyarılar için, ön ek (MSBuild tarafından verilen uyarılar gibi MSB ) dahil olmak üzere tam kodu belirtin.

    Aşağıdaki kod, cs0028 ve CS0618 uyarılarını gizlenen uyarılar listesine ekler:

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

    Önceki örnekte gösterildiği gibi öğesinin önceki değerine $(NoWarn) başvurmak, bu sayıları üzerine yazmak yerine için NoWarndaha önce ayarlanmış herhangi bir değere ekler.

Bkz. NoWarn.

Derleme komut satırından uyarıyı gizleme

Komut satırından bir proje oluşturuyorsanız, MSBuild komut satırında kullanarak -warnAsMessage uyarıları da gizleyebilirsiniz. Birden çok uyarı kodu listesinin çevresinde tırnak işaretleri kullanın.

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

Bkz. MSBuild komut satırı başvurusu.

Araç uyarılarını gizleme

MSBuild gibi derleyici dışındaki araçlardan gelen uyarıları nasıl bastırdığınız, sahip olduğunuz proje türüne ve hangi MSBuild sürümünü kullandığınıza bağlıdır.

MSBuild 16.8 ve üzeri sürümlerle, SDK veya standart içeri aktarma kullanan projelerde, daha önce açıklanan yöntemleri kullanarak araç uyarılarını gizleyebilirsiniz. Derleyici uyarısıyla yapabileceğiniz gibi MSB yalnızca bir sayı değil, tam hata kodunu (MSBuild için gibi ön ek dahil) belirtmeniz gerekir. Ayrıca, ileti ortadan kaldırılmaz; yine de bilgilendirme iletisi olarak gösterilir, ancak bir uyarıdan indirgenmiştir.

MSBuild 16.7 ve önceki sürümlerde ve SDK veya standart içeri aktarma kullanmayan herhangi bir projede bu uyarılar kullanılarak NoWarngizlenmiyor. Böyle durumlarda, araç uyarılarını engellemek için kullanabileceğiniz özellik şeklindedir MSBuildWarningsAsMessages. Proje dosyasını düzenleyerek veya MSBuild komut satırında seçeneğini belirterek MSBuildWarningsAsMessages derleme uyarılarını gizleyebilirsiniz. kullanırken MSBuildWarningsAsMessages, ön ek dahil olmak üzere MSB tam MSBuild hata kodunu kullanın.

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

Bazı MSBuild uyarılarının ayarıyla MSBuildWarningsAsMessagesgizlenemez. Bunları devre dışı bırakmak için komut satırı seçeneğini warnAsMessagekullanın.

Ayrıca, bazı uyarılar uyarıyı devre dışı bırakmak için ayarlayabileceğiniz belirli özelliklere sahiptir. Örneğin, MSB3253 özelliği ayarlanarak devre dışı bırakılır:

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

Mümkün olduğunda daha açık özelliğini kullanın, çünkü bir hata kodu tek başına o kadar anlaşılır değildir. Kodun hata başvuru sayfası genellikle kodu devre dışı bırakmak için kullanılan özelliği içerir.

NuGet paketleri için uyarıları gizleme

Bazı durumlarda, projenin tamamı için değil, tek bir NuGet paketi için NuGet derleyici uyarılarını bastırmak isteyebilirsiniz. Uyarı bir amaca hizmet eder, bu nedenle bunu proje düzeyinde gizlemeyi istemezsiniz. Örneğin, NuGet uyarılarından biri paketin projenizle tam olarak uyumlu olmayabileceğini bildirir. Bunu proje düzeyinde gizler ve daha sonra ek bir NuGet paketi eklerseniz, uyumluluk uyarısı oluşturup oluşturmadığını asla bilemeyeceksiniz.

Tek bir NuGet paketi için belirli bir uyarıyı gizleme

  1. Çözüm Gezgini'da derleyici uyarılarını engellemek istediğiniz NuGet paketini seçin.

    Screenshot of NuGet package in Solution Explorer.

    Screenshot of NuGet package in Solution Explorer.

  2. Sağ tıklama veya bağlam menüsünde Özellikler'i seçin.

  3. Paketin özelliklerinin Uyarıları gizle kutusuna, bu paket için gizlemesini istediğiniz uyarı numarasını girin. Birden fazla uyarıyı engellemek istiyorsanız, uyarı numaralarını ayırmak için virgül kullanın.

    NuGet package properties

    Screenshot of NuGet package properties

    Uyarı Çözüm Gezgini ve Hata Listesi'nden kaybolur. Proje dosyasında NoWarn özelliği ayarlanır.

     <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>