Condividi tramite


SYSLIB1019: impossibile trovare un campo di tipo ILogger

Quando una definizione di metodo di registrazione non include in modo esplicito un parametro di tipo ILogger, il tipo contenente il metodo di registrazione deve avere uno e un solo campo di tipo ILogger. Verrà ILogger usato come destinazione per i messaggi di log.

Soluzioni alternative

Verificare che il tipo contenente il metodo di registrazione includa un campo di tipo ILogger o includa un parametro di tipo ILogger nella firma del metodo di registrazione.

Annotazioni

Se viene visualizzato questo errore, ma la classe usa un costruttore primario che accetta , ILoggerè possibile risolvere l'errore aggiungendo un ILogger campo come indicato di seguito:

public partial class Foo(ILogger<Foo> logger) {
    // Workaround for https://github.com/dotnet/runtime/issues/91121.
    private readonly ILogger _logger = logger;
}

Sopprimere avvisi

È consigliabile usare una delle soluzioni alternative quando possibile. Tuttavia, se non è possibile modificare il codice, è possibile eliminare l'avviso tramite una #pragma direttiva o un'impostazione <NoWarn> di progetto. Se la diagnostica del SYSLIB1XXX generatore di origine non viene visualizzata come errore, è possibile eliminare l'avviso nel codice o nel file di progetto.

Per eliminare gli avvisi nel codice (sostituire l'ID di diagnostica in base alle esigenze):

// Disable the warning.
#pragma warning disable SYSLIB1006

// Code that generates compiler diagnostic.
// ...

// Re-enable the warning.
#pragma warning restore SYSLIB1006

Per eliminare gli avvisi in un file di progetto (sostituire gli ID di diagnostica in base alle esigenze):

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   <TargetFramework>net10.0</TargetFramework>
   <!-- NoWarn below suppresses SYSLIB1002 project-wide -->
   <NoWarn>$(NoWarn);SYSLIB1002</NoWarn>
   <!-- To suppress multiple warnings, you can use multiple NoWarn elements -->
   <NoWarn>$(NoWarn);SYSLIB1002</NoWarn>
   <NoWarn>$(NoWarn);SYSLIB1006</NoWarn>
   <!-- Alternatively, you can suppress multiple warnings by using a semicolon-delimited list -->
   <NoWarn>$(NoWarn);SYSLIB1002;SYSLIB1006;SYSLIB1007</NoWarn>
  </PropertyGroup>
</Project>