Condividi tramite


Eliminare 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, Detailedo Diagnostic. Per ulteriori informazioni sulla verbosità, vedere Procedura: Visualizzare, salvare e configurare i file di log di compilazione.

Cautela

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.

Eliminare avvisi specifici per Visual C# o F#

Usare le proprietà di compilazione per sopprimere 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 desideri sopprimere 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 Compilazionee 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 una descrizione dei codici di avviso, vedere messaggi del compilatore C#.

  5. Ricompilare la soluzione.

  1. In Esplora soluzioniscegliere il progetto in cui si desidera eliminare gli avvisi.

  2. Fare clic con il pulsante destro del mouse sul nodo del progetto e selezionare Proprietà nel menu contestuale. 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 una descrizione dei codici di avviso, vedere messaggi del compilatore C#.

  5. Ricompilare la soluzione.

Nota

Alcuni avvisi non possono essere eliminati. Per un elenco di questi, vedere l'opzione NoWarn del compilatore .

Eliminare avvisi specifici per C++

È possibile sopprimere gli avvisi in un progetto C++ usando le proprietà del progetto; si utilizza la pagina Configurazione delle proprietà per sopprimere avvisi specifici per l'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 lo scopo è disabilitare un avviso in un determinato file o solo 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 soluzioniscegliere il progetto o il file di origine in cui eliminare gli avvisi.

  2. Nella barra dei menu scegliere Visualizza pagine delle proprietà>.

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

  4. Eseguire uno dei passaggi seguenti:

    • Nella casella Disabilita avvisi specifici specificare i codici di errore degli avvisi da eliminare, separati da un punto e virgola.

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

  5. Scegliere il pulsante OK e quindi 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 del linker /IGNORE. Vedere /IGNORE (Ignora avvisi specifici) e per impostare questa opzione, vedere /link (Passare opzioni al linker).

Eliminare gli avvisi per Visual Basic

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

Per eliminare avvisi specifici per un intero progetto di Visual Basic

In questo esempio viene illustrato come modificare il file .vbproj per eliminare avvisi specifici del compilatore.

  1. In Esplora soluzioni, scegli il progetto in cui desideri sopprimere gli avvisi.

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

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

    Il file di progetto XML viene aperto nell'editor di codice.

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

    L'esempio seguente mostra l'elemento <NoWarn> per la configurazione di compilazione Debug in una piattaforma x86, con due avvisi del compilatore eliminati:

    <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

    Per impostazione predefinita, i progetti .NET Core non contengono gruppi di proprietà di configurazione della compilazione. Per eliminare gli avvisi in un progetto .NET Core, aggiungere manualmente la sezione di configurazione della compilazione al file. Per 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 .vbproj.

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

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

    La finestra Output non visualizza più gli avvisi specificati.

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

È possibile eliminare gli avvisi per singoli avvisi o per categoria. L'esperienza varia a seconda che si stia usando un progetto .NET Framework o un progetto .NET Core (o .NET 5 e versioni successive).

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 Configurazione degli avvisi in Visual Basic.

Progetti .NET 5 o versioni successive

È possibile modificare il file di progetto per sopprimere avvisi specifici del compilatore in base ai codici di diagnostica oppure sopprimere gli avvisi per categoria tramite il Designer del progetto. Per aprire il progettista del progetto, selezionare il nodo del progetto, fare clic con il pulsante destro del mouse e scegliere Proprietà, oppure premere ALT+INVIO.

Nella sezione Compila, scegli Avvisi. In gravità dell'avvisoè possibile scegliere Impostare i livelli di gravità degli avvisi singolarmente. Le categorie vengono visualizzate ed è possibile impostare ogni categoria su Nessuna per disabilitare la categoria di avviso oppure impostarla su avviso o Errore per abilitarla come avviso o errore.

Screenshot che mostra l'impostazione della gravità di avviso per un progetto di Visual Basic .NET.

Progetti .NET Framework

È possibile nascondere avvisi specifici del compilatore per Visual Basic modificando il file .vbproj per il progetto. Per eliminare gli avvisi categoria, è possibile usare la pagina delle proprietà Compilazione.

Per eliminare avvisi specifici per un intero progetto di Visual Basic

In questo esempio viene illustrato come modificare il file .vbproj per eliminare avvisi specifici del compilatore.

  1. In Esplora soluzioniscegliere il progetto in cui si desidera eliminare gli avvisi.

  2. (.NET) Fare doppio clic sul nodo del progetto per aprire il file di progetto.

    (.NET Framework) Nella barra dei menu scegliere Progetto>Scarica progetto. Quindi, 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 MSBuild viene aperto nell'editor di codice. Si tratta di un file XML.

  3. Individuare l'elemento <NoWarn> relativo alla configurazione di compilazione che si sta utilizzando e aggiungere uno o più numeri di avviso come valore dell'elemento <NoWarn>. Se si specificano più numeri di avviso, separarli con una virgola.

    L'esempio seguente mostra l'elemento <NoWarn> per la configurazione di compilazione Debug in una piattaforma x86, con due avvisi del compilatore eliminati:

    <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

    Per impostazione predefinita, i progetti .NET Core e .NET 5 e versioni successive non contengono gruppi di proprietà di configurazione della compilazione. Per eliminare gli avvisi in un progetto .NET Core, aggiungere manualmente la sezione di configurazione della compilazione al file. Per 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>
    
  4. Salvare le modifiche apportate al file .vbproj.

  5. Nella barra dei menu scegliere Progetto>Ricarica progetto.

  6. Nella barra dei menu scegliere Compila>Ricompila soluzione.

    La finestra Output non visualizza più gli avvisi specificati.

Per ulteriori informazioni, consultare l'opzione del compilatore /nowarn del 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 sezione PropertyGroup utilizzare la proprietà NoWarn. 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 generati 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 virgolette attorno agli elenchi contenenti più codici di avviso.

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

Consultare il riferimento alla riga di comando di MSBuild .

Eliminare gli avvisi per tutti i progetti e le soluzioni in una struttura di directory

È possibile eliminare gli avvisi per molti progetti contemporaneamente se si trovano tutti in una directory comune nel file system usando il file MSBuild Directory.Build.props. Vedere Personalizzare le compilazioni in base alla directory. Ad esempio, se si inserisce il file Directory.Build.props seguente nella radice di una cartella con molte soluzioni e progetti, è possibile eliminare un elenco specificato di avvisi per tutti i progetti in tale cartella e in modo ricorsivo alle cartelle al suo interno.

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

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 esempio MSB 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 declassato da avviso a messaggio informativo.

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 sopprimere 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 prefisso MSB.

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

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

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.

Eliminare gli 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 serve a scopo, quindi non si vuole eliminarlo a livello di progetto. Ad esempio, uno degli avvisi di NuGet indica che il pacchetto potrebbe non essere completamente compatibile con il progetto. Se lo si elimina a livello di progetto e successivamente si aggiunge un pacchetto NuGet aggiuntivo, non si saprà mai se generasse l'avviso di compatibilità.

Per eliminare un avviso specifico per un singolo pacchetto NuGet

  1. In Esplora soluzioni, selezionare il pacchetto NuGet per cui sopprimere gli avvisi del compilatore.

    screenshot del pacchetto NuGet in Esplora Soluzioni.

    Screenshot del pacchetto NuGet in Solution Explorer.

  2. Dal menu di scelta rapida o facendo clic con il pulsante destro del mouse, selezionare Proprietà.

  3. Nella casella Elimina avvisi delle proprietà del pacchetto immettere il numero di avviso da eliminare per questo pacchetto. Se si desidera eliminare più avvisi, usare una virgola per separare i numeri di avviso.

    proprietà del pacchetto NuGet

    Screenshot delle proprietà del pacchetto NuGet

    L'avviso scompare dalla 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>
    

Eliminare gli avvisi di analisi del codice

I messaggi di diagnostica con codici che iniziano con CA sono violazioni e avvisi di analisi del codice, distinti dagli avvisi del compilatore descritti in questo articolo. È possibile eliminare gli avvisi di analisi del codice in diversi modi, tra cui l'uso di markup specifici del sito e a livello di progetto o a livello globale, usando i file di configurazione delle regole. Vedere Eliminare gli avvisi di analisi del codice e Eliminare le violazioni dell'analisi del codice.