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.
Çözüm Gezgini içinde uyarıları engellemek istediğiniz projeyi seçin.
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.
Oluştur'u seçin ve Hatalar ve uyarılar alt bölümüne gidin.
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.
Çözümü yeniden oluşturun.
Çözüm Gezgini içinde uyarıları engellemek istediğiniz projeyi seçin.
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.
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.
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.
Çö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 warning
belirli 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 warning
düşünmelisiniz. Bkz. #pragma uyarı.
Çözüm Gezgini'da, uyarıları engellemek istediğiniz projeyi veya kaynak dosyayı seçin.
Menü çubuğunda Özellik Sayfalarını Görüntüle'yi>seçin.
Yapılandırma Özellikleri kategorisini seçin, C/C++ kategorisini ve ardından Gelişmiş sayfasını seçin.
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.
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.
Çözüm Gezgini içinde uyarıları engellemek istediğiniz projeyi seçin.
Menü çubuğunda Proje>Projeyi Kaldır'ı seçin.
Çö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.
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>
Değişiklikleri .vbproj dosyasına kaydedin.
Menü çubuğunda Projeyi Yeniden Yükle'yi> seçin.
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.
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.
Yeni
PropertyGroup
bir bölümde özelliğini kullanınNoWarn
. 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 gibiMSB
) 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çinNoWarn
daha ö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 NoWarn
gizlenmiyor. 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 MSBuildWarningsAsMessages
gizlenemez. Bunları devre dışı bırakmak için komut satırı seçeneğini warnAsMessage
kullanı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
Çözüm Gezgini'da derleyici uyarılarını engellemek istediğiniz NuGet paketini seçin.
Sağ tıklama veya bağlam menüsünde Özellikler'i seçin.
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.
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>