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


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

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

ИД диагностики Description
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>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>

См. также