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>