SYSLIB1011: Protokollierungsmethoden können die allows ref struct Einschränkung nicht verwenden.

Eine annotierte LoggerMessageAttribute Methode verwendet die C# 13 Anti-Einschränkung allows ref struct für einen Typparameter. Der Protokollierungsquellgenerator speichert Parameter in Strukturfeldern, sodass es keine Typargumente enthalten ref struct kann.

Problemumgehungen

Protokollierungsmethoden unterstützen generische Typparameter und die meisten Einschränkungsformulare (class, , , structunmanagedBasistypen, Schnittstellen und notnullnew()). Entfernen Sie die allows ref struct Antieinschränkung aus dem Typparameter, um diesen Fehler zu beheben.

Unterdrücken von Warnungen

Es wird empfohlen, nach Möglichkeit eine der Problemumgehungen zu verwenden. Wenn Sie den Code jedoch nicht ändern können, können Sie die Warnung über eine #pragma Direktive oder eine <NoWarn> Projekteinstellung unterdrücken. Wenn die SYSLIB1XXX Quellgeneratordiagnose nicht als Fehler angezeigt wird, können Sie die Warnung im Code oder in der Projektdatei unterdrücken.

So unterdrücken Sie die Warnungen im Code (ersetzen Sie die Diagnose-ID nach Bedarf):

// Disable the warning.
#pragma warning disable SYSLIB1006

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

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

So unterdrücken Sie die Warnungen in einer Projektdatei (ersetzen Sie die Diagnose-IDs nach Bedarf):

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