Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом документе перечислены известные критические изменения в Razor после общего выпуска .NET 9 (пакет SDK для .NET версии 9.0.100) до общего выпуска .NET 10 (пакет SDK для .NET версии 10.0.100).
Разрывы анализа директив препроцессора
Представлено в VS 17.13p1 и .NET 9.0.200
Новый режим лексирования был представлен для понимания разделов C# в файлах razor, которые повышают совместимость с тем, как C# изначально лексируется. Однако это также приводит к некоторым критическим изменениям в понимании компилятора Razor директив предварительной обработки C#, которые ранее не работали последовательно. Директивы теперь необходимы для начала строки в файлах Razor (до них разрешено только пробелы). Кроме того, отключенные разделы теперь должным образом отключены компилятором Razor, когда #if
блоки препроцессора считаются неактивными.
Блоки препроцессора должны начинаться в начале строки.
@{ #if DEBUG /* Previously allowed, now triggers RZ1043 */ }
<div>test</div>
@{ #endif /* Previously allowed, now triggers RZ1043 */ }
Чтобы исправить эту проблему, переместите директивы в новую строку. До директивы разрешено только пробелы.
@{
#if DEBUG /* This is allowed */
}
<div>test</div>
@{
#endif /* This is allowed */
}
Отключенные блоки теперь считаются должным образом в компиляторе Razor
Отключенные блоки теперь считаются полностью отключенными компилятором Razor, и попытка понять блок не выполняется. При сочетании с предыдущим разрывом это означает, что если #else
#elif
строка или #endif
не была в начале строки (пробелы в модуле), более крупный раздел файла будет считаться отключенным, чем в более ранних версиях компилятора Razor. Чтобы помочь диагностировать потенциальные разрывы здесь, компилятор Razor сканирует отключенные текстовые разделы для потенциальных неуместных директив препроцессора и сообщить предупреждение, если обнаружен.
@{
#if false
}
This area is now properly considered disabled by the razor compiler, and no attempt to understand it as either C# or HTML is made. This
can cause changes to how the output is rendered from previous versions of the Razor compiler.
@{ #else
In previous versions of the Razor compiler, this directive would have been picked up. It is no longer picked up because it is not at
the start of a line. The Razor compiler will report a warning, RZ1044, to help diagnose any potential breaks in this area.
}
@{
#endif
}
ASP.NET Core