Non visualizzare gli avvisi del compilatore

Con Visual Studio è possibile specificare gli avvisi da eliminare specificando i codici di avviso in Progettazione progetti (pagine delle proprietà del progetto). È anche possibile eliminare gli avvisi impostando determinate proprietà direttamente nel file di progetto, tramite la riga di comando o nel codice quando si desidera eliminare un avviso in un solo percorso.

Alcuni compilatori e strumenti di compilazione hanno anche opzioni per specificare il livello di avviso. In questo modo è possibile controllare le categorie di avvisi con un'unica impostazione. Per queste opzioni, vedere la documentazione relativa al linguaggio e al compilatore specifici in uso:

Se l'obiettivo è visualizzare un output più conciso e incentrato nel log di compilazione, è possibile modificare il livello di dettaglio del log di compilazione. Le impostazioni disponibili sono Normal, Detailed o Diagnostic. Per altre informazioni sul livello di dettaglio, vedere Procedura: Visualizzare, salvare e configurare file di log di compilazione.

Attenzione

Si noti che gli avvisi devono essere un'indicazione di un potenziale problema con il codice, pertanto è necessario comprendere i rischi di disabilitazione di qualsiasi avviso specifico. Le impostazioni di Visual Studio disabilitano gli avvisi a livello di progetto. È consigliabile usare un approccio più mirato per disabilitare gli avvisi rispetto a quelli forniti da Visual Studio. La maggior parte dei compilatori consente di disabilitare gli avvisi solo per determinate righe di codice, in modo da poter comunque esaminare gli avvisi se si verificano altrove nello stesso progetto.

Non visualizzare avvisi specifici per Visual C# o F#

Usare le proprietà di compilazione per eliminare avvisi specifici per un intero progetto C# e F#. Se si vuole eliminare un avviso solo in una parte specifica del codice in C#, usare #pragma avviso. Per F#, usare #nowarn direttiva del preprocessore per disabilitare un avviso per un intero file di origine.

  1. In Esplora soluzioni scegliere il progetto in cui non devono essere visualizzati gli avvisi.

  2. Fare clic con il pulsante destro del mouse sul nodo del progetto e scegliere Proprietà dal menu di scelta rapida. In alternativa, selezionare il nodo del progetto e premere ALT+INVIO.

  3. Scegliere Compila e passare alla sottosezione Errori e avvisi .

  4. Nella casella Elimina avvisi o Elimina avvisi specifici specificare i codici di errore degli avvisi da eliminare, separati da punti e virgola. Per un elenco e le descrizioni dei codici di avviso, vedere Messaggi del compilatore C#.

  5. Ricompila la soluzione.

  1. In Esplora soluzioni scegliere il progetto in cui non devono essere visualizzati gli avvisi.

  2. Fare clic con il pulsante destro del mouse sul nodo del progetto e scegliere Proprietà dal menu di scelta rapida. In alternativa, selezionare il nodo del progetto e premere ALT+INVIO.

  3. Scegliere la pagina o la sezione Compilazione e, se si è nell'interfaccia utente corrente, aprire la sottosezione Errori e avvisi .

  4. Nella casella Elimina avvisi o Elimina avvisi specifici specificare i codici di errore degli avvisi da eliminare, separati da punti e virgola. Per un elenco e le descrizioni dei codici di avviso, vedere Messaggi del compilatore C#.

  5. Ricompila la soluzione.

Nota

Alcuni avvisi non possono essere eliminati. Per un elenco di questi elementi, vedere Opzione del compilatore NoWarn.

Eliminare avvisi specifici per C++

È possibile eliminare gli avvisi in un progetto C++ usando le proprietà del progetto; utilizzare la pagina delle proprietà Proprietà di configurazione per eliminare avvisi specifici per un intero progetto C++. È anche possibile eliminare gli avvisi in file specifici usando #pragma warning. Questo articolo illustra il controllo a livello di progetto, ma se la finalità consiste nel disabilitare un avviso in un determinato file o solo in alcune righe di codice, ma si vuole continuare a visualizzare altre occorrenze dello stesso avviso, è consigliabile usare #pragma warning. Vedere #pragma avviso.

  1. In Esplora soluzioni scegliere il progetto o il file di origine in cui non devono essere visualizzati gli avvisi.

  2. Sulla barra dei menu scegliere Visualizza>Pagine delle proprietà.

  3. Scegliere la categoria Proprietà di configurazione, selezionare la categoria C/C++ e scegliere la pagina Avanzate.

  4. Effettuare uno dei passaggi indicati di seguito.

    • Nella casella Disabilita avvisi specifici specificare i codici di errore degli avvisi che non devono essere visualizzati, separati da punto e virgola.

    • Nella casella Disabilita avvisi specifici scegliere Modifica per visualizzare altre opzioni.

  5. Fare clic sul pulsante OK e ricompilare la soluzione.

Se l'avviso proviene da un altro strumento, vedere la documentazione relativa allo strumento specifico per scoprire come eliminare gli avvisi per tale strumento. Ad esempio, il linker C++ contiene alcuni avvisi che è possibile disabilitare usando l'opzione /IGNORE del linker. Vedere /IGNORE (Ignora avvisi specifici) e per impostare questa opzione, vedere /link (Passare le opzioni al linker).

Non visualizzare avvisi per Visual Basic

È possibile nascondere gli avvisi del compilatore specifici per Visual Basic modificando il file con estensione vbproj per il progetto. Per escludere gli avvisi in base alla categoria, è possibile usare la pagina delle proprietà Compilazione. Se si desidera disabilitare un avviso in una parte specifica di un file di codice, usare le direttive #Disable e #Enable. Per altre informazioni, vedere Configurare gli avvisi in Visual Basic.

Per eliminare avvisi specifici per un intero progetto di Visual Basic

Questo esempio mostra come modificare il file vbproj per escludere avvisi specifici del compilatore.

  1. In Esplora soluzioni scegliere il progetto in cui non devono essere visualizzati gli avvisi.

  2. Sulla barra dei menu scegliere Progetto>Scarica progetto.

  3. In Esplora soluzioni aprire il menu di scelta rapida o fare clic con il pulsante destro del mouse per il progetto e quindi scegliere Modifica <NomeProgetto.vbproj>.

    Il file di progetto XML verrà aperto nell'editor del codice.

  4. Individuare l'elemento <NoWarn> per la configurazione della build usata per la compilazione e aggiungere uno o più numeri di avviso come valore dell'elemento <NoWarn>. Se si specificano più numeri di avviso, separarli con una virgola.

    Nell'esempio seguente viene indicato l'elemento <NoWarn> per la configurazione della build Debug in una piattaforma x86 con due avvisi del compilatore esclusi:

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

    Nota

    I progetti .NET Core non contengono gruppi di proprietà di configurazione della build per impostazione predefinita. Per escludere avvisi in un progetto .NET Core, aggiungere la sezione della configurazione della build manualmente al file. Ad esempio:

    <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. Salvare le modifiche apportate al file con estensione vbproj.

  6. Sulla barra dei menu scegliere Progetto>Ricarica progetto.

  7. Sulla barra dei menu scegliere Compila>Ricompila soluzione.

    Nella finestra Output gli avvisi specificati non saranno più visualizzati.

Per altre informazioni, vedere l'opzione del compilatore /nowarn per il compilatore della riga di comando di Visual Basic.

Eliminare un avviso modificando il file di progetto

L'uso della finestra di progettazione delle proprietà di Visual Studio per eliminare gli avvisi comporta una modifica al file di progetto. A volte, può essere più comodo modificare a mano il file di progetto per eseguire l'attività di disabilitazione di un avviso. Il file di progetto viene elaborato da MSBuild, il motore di compilazione di Microsoft. Vedere MSBuild.

Inoltre, in Visual Studio 2019 versione 16.7 e precedenti, alcuni avvisi provenienti da strumenti diversi dal compilatore non possono essere eliminati in altro modo.

  1. Per aprire il file di progetto nell'editor di Visual Studio, fare clic con il pulsante destro del mouse sul nodo del progetto e scegliere Modifica file di progetto. Alcuni tipi di progetto richiedono di scaricare il progetto prima di poter modificare il file di progetto. Se è necessario scaricare il progetto, fare clic con il pulsante destro del mouse sul nodo del progetto e scegliere Scarica progetto.

  2. In una nuova PropertyGroup sezione usare la NoWarn proprietà . Elencare gli errori da eliminare, separati da virgole o punti e virgola. Per gli avvisi del compilatore, è possibile omettere il codice del linguaggio e immettere solo il numero, ma per maggiore chiarezza, è consigliabile usare il codice completo. Per gli avvisi di altri strumenti nella compilazione, specificare il codice completo, incluso il prefisso , ad esempio MSB per gli avvisi emessi da MSBuild stesso.

    Il codice seguente aggiunge avvisi CS0028 e CS0618 all'elenco degli avvisi eliminati:

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

    Facendo riferimento al valore precedente di $(NoWarn) come illustrato nell'esempio precedente, tali numeri vengono aggiunti a qualsiasi valore impostato in precedenza per NoWarn, anziché sovrascriverlo.

Vedere NoWarn.

Eliminare un avviso dalla riga di comando di compilazione

Se si compila un progetto dalla riga di comando, è anche possibile eliminare gli avvisi usando -warnAsMessage nella riga di comando di MSBuild. Usare le virgolette per gli elenchi di più codici di avviso.

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

Vedere Le informazioni di riferimento sulla riga di comando di MSBuild.

Eliminare gli avvisi degli strumenti

La modalità di eliminazione degli avvisi da strumenti diversi dal compilatore, ad esempio MSBuild, dipende dal tipo di progetto disponibile e dalla versione di MSBuild in uso.

Con MSBuild 16.8 e versioni successive, nei progetti che usano un SDK o le importazioni standard, è possibile eliminare gli avvisi degli strumenti usando gli stessi metodi descritti in precedenza. È necessario specificare il codice di errore completo (incluso il prefisso, ad MSB esempio per MSBuild), non solo un numero possibile con un avviso del compilatore. Inoltre, il messaggio non viene eliminato; viene comunque visualizzato come messaggio informativo, ma è stato abbassato di livello da un avviso.

Con MSBuild 16.7 e versioni precedenti e in qualsiasi progetto che non usa un SDK o le importazioni standard, tali avvisi non vengono eliminati usando NoWarn. In questi casi, la proprietà che è possibile usare per eliminare gli avvisi degli strumenti è MSBuildWarningsAsMessages. È possibile eliminare gli avvisi di compilazione modificando il file di progetto o specificando l'opzione MSBuildWarningsAsMessages nella riga di comando di MSBuild. Quando si usa MSBuildWarningsAsMessages, usare il codice di errore MSBuild completo, incluso il MSB prefisso .

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

Si noti che alcuni avvisi di MSBuild non possono essere eliminati impostando MSBuildWarningsAsMessages. Per disabilitarli, usare l'opzione warnAsMessagedella riga di comando .

Inoltre, alcuni avvisi hanno proprietà specifiche che è possibile impostare per disabilitare l'avviso. Ad esempio, MSB3253 è disabilitato impostando la proprietà :

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

Quando possibile, usare la proprietà più esplicita, perché un codice di errore per sé non è così comprensibile. La pagina di riferimento dell'errore per il codice contiene in genere la proprietà utilizzata per disabilitarla.

Non visualizzare avvisi per i pacchetti NuGet

In alcuni casi, è possibile eliminare gli avvisi del compilatore NuGet per un singolo pacchetto NuGet, anziché per un intero progetto. L'avviso ha uno scopo, quindi si vuole evitare di escluderlo a livello di progetto. Ad esempio, uno degli avvisi NuGet indica che il pacchetto potrebbe non essere completamente compatibile con il progetto. Se si esclude questo avviso a livello di progetto e in seguito si aggiunge un ulteriore pacchetto NuGet, non si saprà mai se questo pacchetto è la causa di un avviso di compatibilità.

Per escludere un avviso specifico per un singolo pacchetto NuGet

  1. In Esplora soluzioni selezionare il pacchetto NuGet per il quale si vogliono escludere avvisi del compilatore.

    Screenshot of NuGet package in Solution Explorer.

    Screenshot of NuGet package in Solution Explorer.

  2. Scegliere Proprietà dal menu di scelta rapida.

  3. Nella casella Elimina avvisi delle proprietà del pacchetto immettere il numero di avviso da eliminare per il pacchetto. Per escludere più di un avviso, usare la virgola per separare i numeri di avviso.

    NuGet package properties

    Screenshot of NuGet package properties

    L'avviso scompare da Esplora soluzioni e dall'Elenco errori. Nel file di progetto viene impostata la proprietà 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>