Поделиться через


Диагностика SYSLIB для создания источника regex

В следующей таблице показаны диагностические идентификаторы для анализаторов генерации исходного кода в .NET 7 и более поздних версий. SYSLIB1045 автоматически уведомляет вас о местах, где можно использовать генерацию исходного кода для создания реализации движка регулярных выражений во время компиляции. Оставшиеся диагностические оповещения указывают на ошибки, связанные с использованием исходного генератора.

Идентификатор диагностики Описание
SYSLIB1040 Недопустимое GeneratedRegexAttribute использование.
SYSLIB1041 К одному методу применено несколько GeneratedRegexAttribute атрибутов, но разрешено только одно.
SYSLIB1042 Указанное регулярное выражение недопустимо.
SYSLIB1043 GeneratedRegexAttribute Метод должен быть частичным, без параметром, не универсальным и не абстрактным, а также возвращатьRegex.
SYSLIB1044 Генератор регулярных выражений не мог создать полную исходную реализацию для указанного регулярного выражения из-за внутреннего ограничения. Дополнительные сведения см. в описании в созданном источнике.
SYSLIB1045 Используется GeneratedRegexAttribute для создания реализации регулярных выражений во время компиляции.

Дополнительные сведения о создании источников для регулярных выражений см. в разделе .NET генераторы источников регулярных выражений.

Отключение предупреждений

Рекомендуется использовать одно из обходных решений, когда это возможно. Однако если вы не можете изменить код, вы можете отключить предупреждение с помощью #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>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>

См. также