SYSLIB1019:找不到 ILogger 类型的字段

如果日志记录方法定义未显式包含 ILogger 类型的参数,则包含日志记录方法的类型必须有一个(且只有一个)类型为 ILogger 的字段。 ILogger 将用作日志消息的目标。

解决方法

确保包含日志记录方法的类型包含 ILogger 类型的字段,或者在日志记录方法签名中包含 ILogger 类型的参数。

注意

如果收到此错误,但类使用采用 ILogger 的主构造函数,可以通过添加 ILogger 字段来解决此错误,如下所示:

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

禁止显示警告

建议尽量使用解决方法之一。 但是,如果无法更改代码,可以通过 #pragma 指令或 <NoWarn> 项目设置来禁止显示警告。 如果 SYSLIB1XXX 源生成器诊断未显示为错误,则可以在代码或项目文件中禁止警告。

若要禁止显示代码中的警告,请执行以下操作:

// Disable the warning.
#pragma warning disable SYSLIB1006

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

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

若要禁止显示项目文件中的警告,请执行以下操作:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   <TargetFramework>net6.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>