Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Автор: Рик Андерсон (Rick Anderson)
Overview
Пакет SDK для .NET 6 включает Microsoft.NET.Sdk.Razor пакет SDK MSBuild (Razor SDK). Пакет SDK для Razor:
- Требуется для сборки, упаковки и публикации проектов, содержащих файлы Razor для проектов ASP.NET Core на основе MVC или проектов Blazor.
- Включает набор предопределенных свойств и элементов, которые позволяют настраивать параметры компиляции файлов Razor (
.cshtmlили.razor).
Пакет SDK для Razor включает элементы Content с атрибутами Include, для которых установлено значение **\*.cshtml и шаблоны подстановки **\*.razor. Публикуются соответствующие файлы.
Prerequisites
Использование пакета SDK для Razor
Большинству веб-приложений не требуется явная ссылка на пакет SDK для Razor.
Чтобы использовать пакет SDK для Razor для построения библиотек классов, содержащих представления Razor или Razor Pages, мы рекомендуем начать с шаблона проекта "Библиотека классов Razor" (RCL). Для RCL, который используется для сборки файлов Blazor (.razor), требуется ссылка на пакет Microsoft.AspNetCore.Components. RCL, который используется для сборки представлений или страниц Razor (файлы .cshtml), требует как минимум netcoreapp3.0 или более поздней версии и имеет ссылку FrameworkReference на метапакет Microsoft.AspNetCore.App metapackage в файле проекта.
Properties
Следующие свойства управляют поведением пакета SDK для Razor в ходе создания проекта:
-
RazorCompileOnBuild: приtrueкомпиляции и отправке Razor сборки в рамках сборки проекта. По умолчанию —true. -
RazorCompileOnPublish: приtrueкомпиляции и отправке Razor сборки в рамках публикации проекта. По умолчанию —true. -
UseRazorSourceGenerator: поtrueумолчанию . Когда:true- Компилируется с помощью создания источника.
- Не создает
<app_name>.Views.dll. Представления включены в<app_name>.dll. - Поддерживает Горячая перезагрузка .NET.
Свойства и элементы в следующей таблице используются для настройки входных и выходных данных в пакете SDK для Razor.
| Items | Description |
|---|---|
RazorGenerate |
Элементы элемента (.cshtml файлы), которые являются входными данными для создания кода. |
RazorComponent |
Элементы (файлы .razor), которые являются входными данными для создания кода компонентов Razor. |
RazorCompile |
Элементы (файлы .cs), которые являются входными данными для целей компиляции Razor. Используйте этот элемент ItemGroup, чтобы указать дополнительные файлы для компиляции в сборку Razor. |
RazorEmbeddedResource |
Элементы, добавленные в качестве внедренных ресурсов к созданной сборке Razor. |
| Property | Description |
|---|---|
RazorOutputPath |
Выходной каталог Razor. |
RazorCompileToolset |
Используется для определения набора инструментов для построения сборки Razor. Допустимые значения: Implicit, RazorSDK и PrecompilationTool. |
| EnableDefaultContentItems | По умолчанию — true. Если trueв проекте содержатся файлы web.config и .json.cshtmlфайлы в качестве содержимого. При ссылке через Microsoft.NET.Sdk.Web также включает все файлы в wwwroot и файлы конфигурации. |
EnableDefaultRazorGenerateItems |
Когда trueфайлы включаются .cshtml из Content элементов в RazorGenerate элементах. |
GenerateRazorTargetAssemblyInfo |
Не используется в .NET 6 или более поздней версии. |
EnableDefaultRazorTargetAssemblyInfoAttributes |
Не используется в .NET 6 или более поздней версии. |
CopyRazorGenerateFilesToPublishDirectory |
При trueкопировании RazorGenerate элементов (.cshtml) в каталог публикации. Обычно опубликованному приложению не нужны файлы Razor, если они участвуют в компиляции во время сборки или публикации. По умолчанию — false. |
PreserveCompilationReferences |
При значении true копирует элементы базовой сборки в каталог публикации. Обычно опубликованному приложению не нужны базовые сборки, если компиляция Razor происходит во время сборки или публикации. Задайте значение true, если для опубликованного приложения требуется компиляция в среде выполнения. Например, задайте значение true, если приложение изменяет файлы .cshtml во время выполнения или использует внедренные представления. По умолчанию — false. |
IncludeRazorContentInPack |
Когда trueвсе Razor элементы содержимого (.cshtml файлы) помечены для включения в созданный пакет NuGet. По умолчанию — false. |
EmbedRazorGenerateSources |
При trueдобавлении элементов RazorGenerate (.cshtml) в качестве внедренных файлов в созданную Razor сборку. По умолчанию — false. |
GenerateMvcApplicationPartsAssemblyAttributes |
Не используется в .NET 6 или более поздней версии. |
DefaultWebContentItemExcludes |
Шаблон подстановки для элементов, которые должны быть исключены из группы элементов Content в проектах, предназначенных для веб-пакета или пакета SDK для Razor |
ExcludeConfigFilesFromBuildOutput |
При значении true файлы CONGIF и .json не копируются в выходной каталог сборки. |
AddRazorSupportForMvc |
При значении true настраивается пакет SDK для Razor для добавления поддержки конфигурации MVC, которая необходима при создании приложений, содержащих представления MVC или Razor Pages. Это свойство неявно задано для проектов .NET Core 3.0 или более поздней версии, предназначенных для веб-пакета SDK |
RazorLangVersion |
Используемая версия языка Razor. |
EmitCompilerGeneratedFiles |
Если задано значение true, создаваемые исходные файлы записываются на диск. Задание значения true может быть полезным при отладке компилятора. Значение по умолчанию — false. |
Дополнительные сведения о свойствах см. в статье MSBuild Properties (Свойства MSBuild).
Компиляция среды выполнения представлений Razor
По умолчанию пакет SDK для Razor не публикует базовые сборки, необходимые для компиляции среды выполнения. Это приведет к сбою компиляции, если модель приложения зависит от компиляции среды выполнения — например, приложение использует внедренные представления или меняет представления после публикации. Установите для
CopyRefAssembliesToPublishDirectoryзначениеtrue, чтобы продолжить публикацию базовых сборок. Поддерживается создание и компиляция кода всего одним вызовом компилятора. Создается отдельная сборка, содержащая типы приложений и создаваемые представления.Для веб-приложений убедитесь, что приложение предназначено для пакета SDK
Microsoft.NET.Sdk.Web.
Версия языка Razor
При использовании пакета SDK Microsoft.NET.Sdk.Web версия языка Razor выводится из целевой версии платформы приложения. Для проектов, предназначенных для SDK Microsoft.NET.Sdk.Razor, или в редких случаях, когда приложению требуется другая версия языка Razor, отличная от выводимого значения, можно настроить версию, задав свойство <RazorLangVersion> в файле проекта приложения.
<PropertyGroup>
<RazorLangVersion>{VERSION}</RazorLangVersion>
</PropertyGroup>
Версия языка Razor тесно интегрирована с версией среды выполнения, для которой она была создана. Выбор языковой версии, не предназначенной для среды выполнения, не поддерживается и, скорее всего, приведет к ошибкам сборки.
Дополнительные ресурсы
Пакет SDK для .NET Core 2.1 или более поздней версии включает Microsoft.NET.Sdk.Razor пакет SDK MSBuild (Razor SDK). Пакет SDK для Razor:
- Требуется для сборки, упаковки и публикации проектов, содержащих файлы Razor для проектов ASP.NET Core на основе MVC или проектов Blazor.
- Включает набор предопределенных целевых объектов, свойств и элементов, которые позволяют настраивать параметры компиляции файлов Razor (
.cshtmlили.razor).
Пакет SDK для Razor включает элементы Content с атрибутами Include, для которых установлено значение **\*.cshtml и шаблоны подстановки **\*.razor. Публикуются соответствующие файлы.
Prerequisites
Пакет SDK для .NET Core 2.1 или более поздней версии
Использование пакета SDK для Razor
Большинству веб-приложений не требуется явная ссылка на пакет SDK для Razor.
Чтобы использовать пакет SDK для Razor для построения библиотек классов, содержащих представления Razor или Razor Pages, мы рекомендуем начать с шаблона проекта "Библиотека классов Razor" (RCL). Для RCL, который используется для сборки файлов Blazor (.razor), требуется ссылка на пакет Microsoft.AspNetCore.Components. RCL, который используется для сборки представлений или страниц Razor (файлы .cshtml), требует как минимум netcoreapp3.0 или более поздней версии и имеет ссылку FrameworkReference на метапакет Microsoft.AspNetCore.App metapackage в файле проекта.
Properties
Следующие свойства управляют поведением пакета SDK для Razor в ходе создания проекта:
-
RazorCompileOnBuild: приtrueкомпиляции и отправке Razor сборки в рамках сборки проекта. По умолчанию —true. -
RazorCompileOnPublish: приtrueкомпиляции и отправке Razor сборки в рамках публикации проекта. По умолчанию —true.
Свойства и элементы в следующей таблице используются для настройки входных и выходных данных в пакете SDK для Razor.
Warning
Начиная с ASP.NET Core 3.0 представления MVC или Razor Pages не обслуживаются по умолчанию, если в файле проекта отключены свойства RazorCompileOnBuild или RazorCompileOnPublish MSBuild. Приложения должны добавить явную ссылку на Microsoft.AspNetCore.Mvc.Razor. Пакет RuntimeCompilation , если приложение использует компиляцию среды выполнения для обработки .cshtml файлов.
| Items | Description |
|---|---|
RazorGenerate |
Элементы элемента (.cshtml файлы), которые являются входными данными для создания кода. |
RazorComponent |
Элементы (файлы .razor), которые являются входными данными для создания кода компонентов Razor. |
RazorCompile |
Элементы (файлы .cs), которые являются входными данными для целей компиляции Razor. Используйте этот элемент ItemGroup, чтобы указать дополнительные файлы для компиляции в сборку Razor. |
RazorTargetAssemblyAttribute |
Элементы, используемые для создания атрибутов для сборки Razor. Например: RazorAssemblyAttributeInclude="System.Reflection.AssemblyMetadataAttribute"_Parameter1="BuildSource" _Parameter2="https://learn.microsoft.com/"> |
RazorEmbeddedResource |
Элементы, добавленные в качестве внедренных ресурсов к созданной сборке Razor. |
| Property | Description |
|---|---|
RazorTargetName |
Имя файла (без расширения) для сборки, созданной Razor. |
RazorOutputPath |
Выходной каталог Razor. |
RazorCompileToolset |
Используется для определения набора инструментов для построения сборки Razor. Допустимые значения: Implicit, RazorSDK и PrecompilationTool. |
| EnableDefaultContentItems | По умолчанию — true. Если trueв проекте содержатся файлы web.config и .json.cshtmlфайлы в качестве содержимого. При ссылке через Microsoft.NET.Sdk.Web также включает все файлы в wwwroot и файлы конфигурации. |
EnableDefaultRazorGenerateItems |
Когда trueфайлы включаются .cshtml из Content элементов в RazorGenerate элементах. |
GenerateRazorTargetAssemblyInfo |
При значении true создает файл .cs с атрибутами, заданными RazorAssemblyAttribute, и включает его в выходные данные компиляции. |
EnableDefaultRazorTargetAssemblyInfoAttributes |
При значении true добавляет стандартный набор атрибутов сборки в RazorAssemblyAttribute. |
CopyRazorGenerateFilesToPublishDirectory |
При trueкопировании RazorGenerate элементов (.cshtml) в каталог публикации. Обычно опубликованному приложению не нужны файлы Razor, если они участвуют в компиляции во время сборки или публикации. По умолчанию — false. |
PreserveCompilationReferences |
При значении true копирует элементы базовой сборки в каталог публикации. Обычно опубликованному приложению не нужны базовые сборки, если компиляция Razor происходит во время сборки или публикации. Задайте значение true, если для опубликованного приложения требуется компиляция в среде выполнения. Например, задайте значение true, если приложение изменяет файлы .cshtml во время выполнения или использует внедренные представления. По умолчанию — false. |
IncludeRazorContentInPack |
Когда trueвсе Razor элементы содержимого (.cshtml файлы) помечены для включения в созданный пакет NuGet. По умолчанию — false. |
EmbedRazorGenerateSources |
При trueдобавлении элементов RazorGenerate (.cshtml) в качестве внедренных файлов в созданную Razor сборку. По умолчанию — false. |
UseRazorBuildServer |
При значении true использует серверный процесс постоянной сборки для разгрузки работы по созданию кода. По умолчанию используется значение UseSharedCompilation. |
GenerateMvcApplicationPartsAssemblyAttributes |
При значении true пакет SDK создает дополнительные атрибуты, используемые MVC во время выполнения для обнаружения частей приложения. |
DefaultWebContentItemExcludes |
Шаблон подстановки для элементов, которые должны быть исключены из группы элементов Content в проектах, предназначенных для веб-пакета или пакета SDK для Razor |
ExcludeConfigFilesFromBuildOutput |
При значении true файлы CONGIF и .json не копируются в выходной каталог сборки. |
AddRazorSupportForMvc |
При значении true настраивается пакет SDK для Razor для добавления поддержки конфигурации MVC, которая необходима при создании приложений, содержащих представления MVC или Razor Pages. Это свойство неявно задано для проектов .NET Core 3.0 или более поздней версии, предназначенных для веб-пакета SDK |
RazorLangVersion |
Используемая версия языка Razor. |
Дополнительные сведения о свойствах см. в статье MSBuild Properties (Свойства MSBuild).
Targets
Пакет SDK для Razor определяет два основных целевых объекта.
-
RazorGenerate. Код создает файлы.csиз элементовRazorGenerate. Используйте свойствоRazorGenerateDependsOn, чтобы указать дополнительные целевые объекты, которые могут выполняться до или после этого целевого объекта. -
RazorCompile: компилирует созданные.csфайлы в сборку Razor . ИспользуйтеRazorCompileDependsOn, чтобы указать дополнительные целевые объекты, которые могут выполняться до или после этого целевого объекта. -
RazorComponentGenerate. Код создает файлы.csдля элементовRazorComponent. Используйте свойствоRazorComponentGenerateDependsOn, чтобы указать дополнительные целевые объекты, которые могут выполняться до или после этого целевого объекта.
Компиляция среды выполнения представлений Razor
По умолчанию пакет SDK для Razor не публикует базовые сборки, необходимые для компиляции среды выполнения. Это приведет к сбою компиляции, если модель приложения зависит от компиляции среды выполнения — например, приложение использует внедренные представления или меняет представления после публикации. Установите для
CopyRefAssembliesToPublishDirectoryзначениеtrue, чтобы продолжить публикацию базовых сборок.Для веб-приложений убедитесь, что приложение предназначено для пакета SDK
Microsoft.NET.Sdk.Web.
Версия языка Razor
При использовании пакета SDK Microsoft.NET.Sdk.Web версия языка Razor выводится из целевой версии платформы приложения. Для проектов, предназначенных для SDK Microsoft.NET.Sdk.Razor, или в редких случаях, когда приложению требуется другая версия языка Razor, отличная от выводимого значения, можно настроить версию, задав свойство <RazorLangVersion> в файле проекта приложения.
<PropertyGroup>
<RazorLangVersion>{VERSION}</RazorLangVersion>
</PropertyGroup>
Версия языка Razor тесно интегрирована с версией среды выполнения, для которой она была создана. Выбор языковой версии, не предназначенной для среды выполнения, не поддерживается и, скорее всего, приведет к ошибкам сборки.
Дополнительные ресурсы
- Стандартизирует процесс создания, упаковки и публикации проектов, содержащих файлы Razor, для проектов на основе MVC ASP.NET.
- Включает набор предопределенных целевых объектов, свойств и элементов, которые позволяют настраивать параметры компиляции файлов Razor.
Пакет SDK для Razor включает элементы Content с атрибутами Include, для которых установлены шаблоны подстановки **\*.cshtml. Публикуются соответствующие файлы.
Prerequisites
Пакет SDK для .NET Core 2.1 или более поздней версии
Использование пакета SDK для Razor
Большинству веб-приложений не требуется явная ссылка на пакет SDK для Razor.
Чтобы использовать пакет SDK для Razor для построения библиотек классов, содержащих представления Razor или страницы Razor:
Используйте
Microsoft.NET.Sdk.RazorвместоMicrosoft.NET.Sdk:<Project SDK="Microsoft.NET.Sdk.Razor"> <!-- omitted for brevity --> </Project>Обычно требуется ссылка на пакет
Microsoft.AspNetCore.Mvcдля получения дополнительных зависимостей, необходимых для сборки и компиляции страниц Razor Pages и представлений Razor. Как минимум, в проекте нужны ссылки на следующие пакеты:Microsoft.AspNetCore.Razor.DesignMicrosoft.AspNetCore.Mvc.Razor.ExtensionsMicrosoft.AspNetCore.Mvc.Razor
Пакет
Microsoft.AspNetCore.Razor.Designпредоставляет задачи компиляции Razor и целевые объекты для проекта.Предыдущие пакеты включены в
Microsoft.AspNetCore.Mvc. В приведенном ниже коде демонстрируется файл проекта, который использует пакет SDK для Razor, чтобы создавать файлы Razor для приложения Razor Pages ASP.NET Core:<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> <TargetFramework>netcoreapp2.1</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.3" /> </ItemGroup> </Project>
Warning
Пакеты Microsoft.AspNetCore.Razor.Design и Microsoft.AspNetCore.Mvc.Razor.Extensions включены в метапакет Microsoft.AspNetCore.App. Однако ссылка на пакет без Microsoft.AspNetCore.App версии предоставляет приложению метапакет, которое не включает последнюю версию Microsoft.AspNetCore.Razor.Design. Проекты должны ссылаться на последовательную версию Microsoft.AspNetCore.Razor.Design (или Microsoft.AspNetCore.Mvc), чтобы были включены последние исправления времени сборки для Razor. Дополнительные сведения см. здесь на GitHub.
Properties
Следующие свойства управляют поведением пакета SDK для Razor в ходе создания проекта:
-
RazorCompileOnBuild: приtrueкомпиляции и отправке Razor сборки в рамках сборки проекта. По умолчанию —true. -
RazorCompileOnPublish: приtrueкомпиляции и отправке Razor сборки в рамках публикации проекта. По умолчанию —true.
Свойства и элементы в следующей таблице используются для настройки входных и выходных данных в пакете SDK для Razor.
| Items | Description |
|---|---|
RazorGenerate |
Элементы элемента (.cshtml файлы), которые являются входными данными для создания кода. |
RazorComponent |
Элементы (файлы .razor), которые являются входными данными для создания кода компонентов Razor. |
RazorCompile |
Элементы (файлы .cs), которые являются входными данными для целей компиляции Razor. Используйте этот элемент ItemGroup, чтобы указать дополнительные файлы для компиляции в сборку Razor. |
RazorTargetAssemblyAttribute |
Элементы, используемые для создания атрибутов для сборки Razor. Например: RazorAssemblyAttributeInclude="System.Reflection.AssemblyMetadataAttribute"_Parameter1="BuildSource" _Parameter2="https://learn.microsoft.com/"> |
RazorEmbeddedResource |
Элементы, добавленные в качестве внедренных ресурсов к созданной сборке Razor. |
| Property | Description |
|---|---|
RazorTargetName |
Имя файла (без расширения) для сборки, созданной Razor. |
RazorOutputPath |
Выходной каталог Razor. |
RazorCompileToolset |
Используется для определения набора инструментов для построения сборки Razor. Допустимые значения: Implicit, RazorSDK и PrecompilationTool. |
| EnableDefaultContentItems | По умолчанию — true. Если trueв проекте содержатся файлы web.config и .json.cshtmlфайлы в качестве содержимого. При ссылке через Microsoft.NET.Sdk.Web также включает все файлы в wwwroot и файлы конфигурации. |
EnableDefaultRazorGenerateItems |
Когда trueфайлы включаются .cshtml из Content элементов в RazorGenerate элементах. |
GenerateRazorTargetAssemblyInfo |
При значении true создает файл .cs с атрибутами, заданными RazorAssemblyAttribute, и включает его в выходные данные компиляции. |
EnableDefaultRazorTargetAssemblyInfoAttributes |
При значении true добавляет стандартный набор атрибутов сборки в RazorAssemblyAttribute. |
CopyRazorGenerateFilesToPublishDirectory |
При trueкопировании RazorGenerate элементов (.cshtml) в каталог публикации. Обычно опубликованному приложению не нужны файлы Razor, если они участвуют в компиляции во время сборки или публикации. По умолчанию — false. |
CopyRefAssembliesToPublishDirectory |
При значении true копирует элементы базовой сборки в каталог публикации. Обычно опубликованному приложению не нужны базовые сборки, если компиляция Razor происходит во время сборки или публикации. Задайте значение true, если для опубликованного приложения требуется компиляция в среде выполнения. Например, задайте значение true, если приложение изменяет файлы .cshtml во время выполнения или использует внедренные представления. По умолчанию — false. |
IncludeRazorContentInPack |
Когда trueвсе Razor элементы содержимого (.cshtml файлы) помечены для включения в созданный пакет NuGet. По умолчанию — false. |
EmbedRazorGenerateSources |
При trueдобавлении элементов RazorGenerate (.cshtml) в качестве внедренных файлов в созданную Razor сборку. По умолчанию — false. |
UseRazorBuildServer |
При значении true использует серверный процесс постоянной сборки для разгрузки работы по созданию кода. По умолчанию используется значение UseSharedCompilation. |
GenerateMvcApplicationPartsAssemblyAttributes |
При значении true пакет SDK создает дополнительные атрибуты, используемые MVC во время выполнения для обнаружения частей приложения. |
DefaultWebContentItemExcludes |
Шаблон подстановки для элементов, которые должны быть исключены из группы элементов Content в проектах, предназначенных для веб-пакета или пакета SDK для Razor |
ExcludeConfigFilesFromBuildOutput |
При значении true файлы CONGIF и .json не копируются в выходной каталог сборки. |
AddRazorSupportForMvc |
При значении true настраивается пакет SDK для Razor для добавления поддержки конфигурации MVC, которая необходима при создании приложений, содержащих представления MVC или Razor Pages. Это свойство неявно задано для проектов .NET Core 3.0 или более поздней версии, предназначенных для веб-пакета SDK |
RazorLangVersion |
Используемая версия языка Razor. |
Дополнительные сведения о свойствах см. в статье MSBuild Properties (Свойства MSBuild).
Targets
Пакет SDK для Razor определяет два основных целевых объекта.
-
RazorGenerate. Код создает файлы.csиз элементовRazorGenerate. Используйте свойствоRazorGenerateDependsOn, чтобы указать дополнительные целевые объекты, которые могут выполняться до или после этого целевого объекта. -
RazorCompile: компилирует созданные.csфайлы в сборку Razor . ИспользуйтеRazorCompileDependsOn, чтобы указать дополнительные целевые объекты, которые могут выполняться до или после этого целевого объекта. -
RazorComponentGenerate. Код создает файлы.csдля элементовRazorComponent. Используйте свойствоRazorComponentGenerateDependsOn, чтобы указать дополнительные целевые объекты, которые могут выполняться до или после этого целевого объекта.
Компиляция среды выполнения представлений Razor
По умолчанию пакет SDK для Razor не публикует базовые сборки, необходимые для компиляции среды выполнения. Это приведет к сбою компиляции, если модель приложения зависит от компиляции среды выполнения — например, приложение использует внедренные представления или меняет представления после публикации. Установите для
CopyRefAssembliesToPublishDirectoryзначениеtrue, чтобы продолжить публикацию базовых сборок.Для веб-приложений убедитесь, что приложение предназначено для пакета SDK
Microsoft.NET.Sdk.Web.
Версия языка Razor
При использовании пакета SDK Microsoft.NET.Sdk.Web версия языка Razor выводится из целевой версии платформы приложения. Для проектов, предназначенных для SDK Microsoft.NET.Sdk.Razor, или в редких случаях, когда приложению требуется другая версия языка Razor, отличная от выводимого значения, можно настроить версию, задав свойство <RazorLangVersion> в файле проекта приложения.
<PropertyGroup>
<RazorLangVersion>{VERSION}</RazorLangVersion>
</PropertyGroup>
Версия языка Razor тесно интегрирована с версией среды выполнения, для которой она была создана. Выбор языковой версии, не предназначенной для среды выполнения, не поддерживается и, скорее всего, приведет к ошибкам сборки.
Дополнительные ресурсы
ASP.NET Core