SDK de Razor de ASP.NET Core
Por Rick Anderson
Información general
El SDK de .NET 6.0 incluye el SDK de MSBuild Microsoft.NET.Sdk.Razor
(SDK de Razor). El SDK de Razor:
- Es necesario para compilar, empaquetar y publicar proyectos que contengan archivos Razor para proyectos de Blazor o basados en ASP.NET Core MVC.
- Incluye un conjunto de propiedades y elementos predefinidos que permiten personalizar la compilación de archivos de Razor (
.cshtml
o.razor
).
El SDK de Razor incluye elementos Content
con atributos Include
establecidos en los patrones de uso de comodines **\*.cshtml
y **\*.razor
. Los archivos coincidentes se publican.
Requisitos previos
Uso del SDK de Razor
En la mayoría de las aplicaciones web no es necesario hacer referencia de forma explícita al SDK de Razor.
Para usar el SDK de Razor a fin de compilar bibliotecas de clases que contengan vistas de Razor o Razor Pages, se recomienda comenzar con la plantilla de proyecto de la biblioteca de clases de Razor (RCL). Una RCL que se usa para compilar archivos de Blazor (.razor
) requiere mínimamente una referencia al paquete Microsoft.AspNetCore.Components. Una RCL que se usa para compilar vistas o páginas de Razor (archivos .cshtml
) requiere mínimamente que el destino sea netcoreapp3.0
o una versión posterior, y tener un elemento FrameworkReference
al metapaquete Microsoft.AspNetCore.app en su archivo de proyecto.
Propiedades
Las siguientes propiedades controlan el comportamiento del SDK de Razor como parte de la generación de un proyecto:
RazorCompileOnBuild
: si estrue
, compila y emite el ensamblado de Razor como parte de la generación del proyecto. Tiene como valor predeterminadotrue
.RazorCompileOnPublish
: si estrue
, compila y emite el ensamblado de Razor como parte de la publicación del proyecto. Tiene como valor predeterminadotrue
.UseRazorSourceGenerator
: Tiene como valor predeterminadotrue
. Fecha:true
- Compila mediante la generación de orígenes.
- No crea
<app_name>.Views.dll
. Las vistas se incluyen en<app_name>.dll
. - Admite la Recarga activa de .NET.
Para configurar las entradas y la salida del SDK de Razor se usan las propiedades y los elementos de la tabla siguiente.
Elementos | Descripción |
---|---|
RazorGenerate |
Elementos (archivos .cshtml ) que son entradas para la generación de código. |
RazorComponent |
Elementos (archivos .razor ) que son entradas para la generación de código de componentes de Razor. |
RazorCompile |
Elementos (archivos.cs ) que son entradas de los destinos de compilación de Razor. Use este objeto ItemGroup para especificar otros archivos que se compilen en el ensamblado de Razor. |
RazorEmbeddedResource |
Elementos que se agregan como recursos incrustados al ensamblado de Razor generado. |
Propiedad. | Descripción |
---|---|
RazorOutputPath |
Directorio de salida de Razor. |
RazorCompileToolset |
Se usa para determinar el conjunto de herramientas que se va a emplear para compilar el ensamblado de Razor. Valores válidos son Implicit , RazorSDK y PrecompilationTool . |
EnableDefaultContentItems | El valor predeterminado es true . Si es true , incluye archivos web.config, .json y .cshtml como contenido en el proyecto. Si la referencia se realizar a través de Microsoft.NET.Sdk.Web , también se incluyen todos los archivos bajo wwwroot y los archivos de configuración. |
EnableDefaultRazorGenerateItems |
Si es true , incluye los archivos .cshtml de los elementos Content en elementos RazorGenerate . |
GenerateRazorTargetAssemblyInfo |
No se usa en .NET 6 ni versiones posteriores. |
EnableDefaultRazorTargetAssemblyInfoAttributes |
No se usa en .NET 6 ni versiones posteriores. |
CopyRazorGenerateFilesToPublishDirectory |
Si es true , copia los archivos ( .cshtml ) de los elementos RazorGenerate en el directorio de publicación. Normalmente, los archivos de Razor no son necesarios en una aplicación publicada si participan en la compilación en el momento de la compilación o la publicación. Tiene como valor predeterminado false . |
PreserveCompilationReferences |
Si es true , copia los elementos de referencia del ensamblado en el directorio de publicación. Normalmente, los ensamblados de referencia no son necesarios en una aplicación publicada si la compilación de Razor tiene lugar en el momento de la compilación o la publicación. Establézcalo en true si la aplicación publicada requiere compilación en tiempo de ejecución. Por ejemplo, establezca el valor en true si la aplicación modifica archivos .cshtml en tiempo de ejecución o usa vistas insertadas. Tiene como valor predeterminado false . |
IncludeRazorContentInPack |
Si es true , todos los elementos de contenido de Razor (archivos .cshtml ) se marcan para incluirse en el paquete NuGet generado. Tiene como valor predeterminado false . |
EmbedRazorGenerateSources |
Si es true , agrega los elementos RazorGenerate (.cshtml ) como archivos incrustados al ensamblado de Razor generado. Tiene como valor predeterminado false . |
GenerateMvcApplicationPartsAssemblyAttributes |
No se usa en .NET 6 ni versiones posteriores. |
DefaultWebContentItemExcludes |
Un patrón global para elementos que se van a excluir del grupo de elementos Content en proyectos destinados a Internet o el SDK de Razor. |
ExcludeConfigFilesFromBuildOutput |
Si es true , los archivos .config y .json no se copian en el directorio de salida de la compilación. |
AddRazorSupportForMvc |
Si es true , configura el SDK de Razor para agregar compatibilidad con la configuración de MVC necesaria al compilar aplicaciones que contienen vistas de MVC o Razor Pages. Esta propiedad se establece de forma implícita para proyectos de .NET Core 3.0 o versiones posteriores que tienen como destino el SDK Web |
RazorLangVersion |
Versión del lenguaje Razor de destino. |
EmitCompilerGeneratedFiles |
Cuando se establece en true , los archivos de origen generados se escriben en el disco. Si se establece true , es útil al depurar el compilador. El valor predeterminado es false . |
Para más información sobre las propiedades, consulte Propiedades de MSBuild.
Compilación en tiempo de ejecución de vistas de Razor
De forma predeterminada, el SDK de Razor no publica los ensamblados de referencia necesarios para realizar una compilación en tiempo de ejecución. Como consecuencia, se producen errores de compilación cuando el modelo de aplicación se basa en la compilación en tiempo de ejecución; por ejemplo, la aplicación usa vistas incrustadas o cambia vistas tras haber sido publicada. Establezca
CopyRefAssembliesToPublishDirectory
entrue
para seguir publicando ensamblados de referencia. Tanto la generación de código como la compilación son compatibles con una sola llamada al compilador. Se genera un único ensamblado que contiene los tipos de aplicación y las vistas generadas.En el caso de una aplicación web, asegúrese de que se destina al SDK
Microsoft.NET.Sdk.Web
.
Versión del lenguaje Razor
Si el destino es el SDK Microsoft.NET.Sdk.Web
, la versión del lenguaje Razor se deduce de la versión del marco de destino de la aplicación. En los proyectos que tienen como destino el SDK de Microsoft.NET.Sdk.Razor
o en el caso excepcional de que la aplicación requiera una versión del lenguaje Razor diferente al valor deducido, se puede configurar una versión si se establece la propiedad <RazorLangVersion>
en el archivo de proyecto de la aplicación:
<PropertyGroup>
<RazorLangVersion>{VERSION}</RazorLangVersion>
</PropertyGroup>
La versión del lenguaje Razor se integra estrechamente con la versión del runtime para la que se ha compilado. No se admite seleccionar como destino una versión del lenguaje que no está diseñada para el entorno de ejecución y es probable que genere errores de compilación.
Recursos adicionales
El SDK de .NET Core 2.1 o posterior incluye el SDK de MSBuild Microsoft.NET.Sdk.Razor
(SDK de Razor). El SDK de Razor:
- Es necesario para compilar, empaquetar y publicar proyectos que contengan archivos Razor para proyectos de Blazor o basados en ASP.NET Core MVC.
- Incluye un conjunto de destinos, propiedades y elementos predefinidos que permiten personalizar la compilación de archivos de Razor (
.cshtml
o.razor
).
El SDK de Razor incluye elementos Content
con atributos Include
establecidos en los patrones de uso de comodines **\*.cshtml
y **\*.razor
. Los archivos coincidentes se publican.
Requisitos previos
SDK de .NET Core 2.1 o versiones posteriores
Uso del SDK de Razor
En la mayoría de las aplicaciones web no es necesario hacer referencia de forma explícita al SDK de Razor.
Para usar el SDK de Razor a fin de compilar bibliotecas de clases que contengan vistas de Razor o Razor Pages, se recomienda comenzar con la plantilla de proyecto de la biblioteca de clases de Razor (RCL). Una RCL que se usa para compilar archivos de Blazor (.razor
) requiere mínimamente una referencia al paquete Microsoft.AspNetCore.Components. Una RCL que se usa para compilar vistas o páginas de Razor (archivos .cshtml
) requiere mínimamente que el destino sea netcoreapp3.0
o una versión posterior, y tener un elemento FrameworkReference
al metapaquete Microsoft.AspNetCore.app en su archivo de proyecto.
Propiedades
Las siguientes propiedades controlan el comportamiento del SDK de Razor como parte de la generación de un proyecto:
RazorCompileOnBuild
: si estrue
, compila y emite el ensamblado de Razor como parte de la generación del proyecto. Tiene como valor predeterminadotrue
.RazorCompileOnPublish
: si estrue
, compila y emite el ensamblado de Razor como parte de la publicación del proyecto. Tiene como valor predeterminadotrue
.
Para configurar las entradas y la salida del SDK de Razor se usan las propiedades y los elementos de la tabla siguiente.
Advertencia
A partir de ASP.NET Core 3.0, las vistas MVC o Razor Pages no se proporcionan de forma predeterminada si las propiedades RazorCompileOnBuild
o RazorCompileOnPublish
de MSBuild del archivo de proyecto están deshabilitadas. Las aplicaciones deben agregar una referencia explícita al paquete Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation si la aplicación se basa en la compilación en tiempo de ejecución para procesar los archivos .cshtml
.
Elementos | Descripción |
---|---|
RazorGenerate |
Elementos (archivos .cshtml ) que son entradas para la generación de código. |
RazorComponent |
Elementos (archivos .razor ) que son entradas para la generación de código de componentes de Razor. |
RazorCompile |
Elementos (archivos.cs ) que son entradas de los destinos de compilación de Razor. Use este objeto ItemGroup para especificar otros archivos que se compilen en el ensamblado de Razor. |
RazorTargetAssemblyAttribute |
Elementos que se usan para generar atributos de código para el ensamblado de Razor. Por ejemplo: RazorAssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute" _Parameter1="BuildSource" _Parameter2="https://learn.microsoft.com/"> |
RazorEmbeddedResource |
Elementos que se agregan como recursos incrustados al ensamblado de Razor generado. |
Propiedad. | Descripción |
---|---|
RazorTargetName |
Nombre de archivo (sin extensión) del ensamblado generado por Razor. |
RazorOutputPath |
Directorio de salida de Razor. |
RazorCompileToolset |
Se usa para determinar el conjunto de herramientas que se va a emplear para compilar el ensamblado de Razor. Valores válidos son Implicit , RazorSDK y PrecompilationTool . |
EnableDefaultContentItems | El valor predeterminado es true . Si es true , incluye archivos web.config, .json y .cshtml como contenido en el proyecto. Si la referencia se realizar a través de Microsoft.NET.Sdk.Web , también se incluyen todos los archivos bajo wwwroot y los archivos de configuración. |
EnableDefaultRazorGenerateItems |
Si es true , incluye los archivos .cshtml de los elementos Content en elementos RazorGenerate . |
GenerateRazorTargetAssemblyInfo |
Si es true , genera un archivo .cs que contiene los atributos especificados por RazorAssemblyAttribute e incluye el archivo en la salida de compilación. |
EnableDefaultRazorTargetAssemblyInfoAttributes |
Si es true , agrega a RazorAssemblyAttribute un conjunto predeterminado de atributos de ensamblado. |
CopyRazorGenerateFilesToPublishDirectory |
Si es true , copia los archivos ( .cshtml ) de los elementos RazorGenerate en el directorio de publicación. Normalmente, los archivos de Razor no son necesarios en una aplicación publicada si participan en la compilación en el momento de la compilación o la publicación. Tiene como valor predeterminado false . |
PreserveCompilationReferences |
Si es true , copia los elementos de referencia del ensamblado en el directorio de publicación. Normalmente, los ensamblados de referencia no son necesarios en una aplicación publicada si la compilación de Razor tiene lugar en el momento de la compilación o la publicación. Establézcalo en true si la aplicación publicada requiere compilación en tiempo de ejecución. Por ejemplo, establezca el valor en true si la aplicación modifica archivos .cshtml en tiempo de ejecución o usa vistas insertadas. Tiene como valor predeterminado false . |
IncludeRazorContentInPack |
Si es true , todos los elementos de contenido de Razor (archivos .cshtml ) se marcan para incluirse en el paquete NuGet generado. Tiene como valor predeterminado false . |
EmbedRazorGenerateSources |
Si es true , agrega los elementos RazorGenerate (.cshtml ) como archivos incrustados al ensamblado de Razor generado. Tiene como valor predeterminado false . |
UseRazorBuildServer |
Si es true , usa un proceso de servidor de compilación persistente para descargar el trabajo de generación de código. El valor predeterminado es UseSharedCompilation . |
GenerateMvcApplicationPartsAssemblyAttributes |
Si es true , el SDK genera atributos adicionales usados por MVC en tiempo de ejecución para realizar la detección de elementos de la aplicación. |
DefaultWebContentItemExcludes |
Un patrón global para elementos que se van a excluir del grupo de elementos Content en proyectos destinados a Internet o el SDK de Razor. |
ExcludeConfigFilesFromBuildOutput |
Si es true , los archivos .config y .json no se copian en el directorio de salida de la compilación. |
AddRazorSupportForMvc |
Si es true , configura el SDK de Razor para agregar compatibilidad con la configuración de MVC necesaria al compilar aplicaciones que contienen vistas de MVC o Razor Pages. Esta propiedad se establece de forma implícita para proyectos de .NET Core 3.0 o versiones posteriores que tienen como destino el SDK Web |
RazorLangVersion |
Versión del lenguaje Razor de destino. |
Para más información sobre las propiedades, consulte Propiedades de MSBuild.
Destinos
El SDK de Razor define dos destinos principales:
RazorGenerate
: el código genera archivos.cs
a partir de elementosRazorGenerate
. Use la propiedadRazorGenerateDependsOn
para especificar más destinos que se puedan ejecutar antes o después de este destino.RazorCompile
: compila los archivos.cs
generados en un ensamblado de Razor. UseRazorCompileDependsOn
para especificar más destinos que se puedan ejecutar antes o después de este destino.RazorComponentGenerate
: el código genera archivos.cs
para elementosRazorComponent
. Use la propiedadRazorComponentGenerateDependsOn
para especificar más destinos que se puedan ejecutar antes o después de este destino.
Compilación en tiempo de ejecución de vistas de Razor
De forma predeterminada, el SDK de Razor no publica los ensamblados de referencia necesarios para realizar una compilación en tiempo de ejecución. Como consecuencia, se producen errores de compilación cuando el modelo de aplicación se basa en la compilación en tiempo de ejecución; por ejemplo, la aplicación usa vistas incrustadas o cambia vistas tras haber sido publicada. Establezca
CopyRefAssembliesToPublishDirectory
entrue
para seguir publicando ensamblados de referencia.En el caso de una aplicación web, asegúrese de que se destina al SDK
Microsoft.NET.Sdk.Web
.
Versión del lenguaje Razor
Si el destino es el SDK Microsoft.NET.Sdk.Web
, la versión del lenguaje Razor se deduce de la versión del marco de destino de la aplicación. En los proyectos que tienen como destino el SDK de Microsoft.NET.Sdk.Razor
o en el caso excepcional de que la aplicación requiera una versión del lenguaje Razor diferente al valor deducido, se puede configurar una versión si se establece la propiedad <RazorLangVersion>
en el archivo de proyecto de la aplicación:
<PropertyGroup>
<RazorLangVersion>{VERSION}</RazorLangVersion>
</PropertyGroup>
La versión del lenguaje Razor se integra estrechamente con la versión del runtime para la que se ha compilado. No se admite seleccionar como destino una versión del lenguaje que no está diseñada para el entorno de ejecución y es probable que genere errores de compilación.
Recursos adicionales
- Normaliza la experiencia de creación, empaquetado y publicación de proyectos que contienen archivos de Razor relativos a proyectos basados en ASP.NET Core MVC.
- Incluye un conjunto de destinos, propiedades y elementos predefinidos que permiten personalizar la compilación de archivos de Razor.
El SDK de Razor incluye un elemento Content
con un atributo Include
establecido en el patrón de comodines **\*.cshtml
. Los archivos coincidentes se publican.
Requisitos previos
SDK de .NET Core 2.1 o versiones posteriores
Uso del SDK de Razor
En la mayoría de las aplicaciones web no es necesario hacer referencia de forma explícita al SDK de Razor.
Para usar el SDK de Razor para compilar bibliotecas de clases que contengan vistas de Razor o Razor Pages:
Use
Microsoft.NET.Sdk.Razor
en lugar deMicrosoft.NET.Sdk
:<Project SDK="Microsoft.NET.Sdk.Razor"> <!-- omitted for brevity --> </Project>
Normalmente, suele ser necesaria una referencia de paquete a
Microsoft.AspNetCore.Mvc
para recibir dependencias adicionales necesarias para generar y compilar Razor Pages y vistas de Razor. Como mínimo, el proyecto debe agregar referencias de paquete a:Microsoft.AspNetCore.Razor.Design
Microsoft.AspNetCore.Mvc.Razor.Extensions
Microsoft.AspNetCore.Mvc.Razor
El paquete
Microsoft.AspNetCore.Razor.Design
proporciona las tareas y los destinos de compilación de Razor para el proyecto.Los paquetes anteriores están incluidos en
Microsoft.AspNetCore.Mvc
. En el siguiente marcado se muestra un archivo de proyecto en el que se usa el SDK de Razor para crear archivos de Razor para una aplicación Razor Pages de 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>
Advertencia
Los paquetes Microsoft.AspNetCore.Razor.Design
y Microsoft.AspNetCore.Mvc.Razor.Extensions
están incluidos en el metapaquete Microsoft.AspNetCore.App. Pero la referencia de paquete Microsoft.AspNetCore.App
sin versión proporciona un metapaquete a la aplicación que no incluye la versión más reciente de Microsoft.AspNetCore.Razor.Design
. Los proyectos deben hacer referencia a una versión coherente de Microsoft.AspNetCore.Razor.Design
(o Microsoft.AspNetCore.Mvc
), de modo que se incluyan las últimas correcciones de tiempo de compilación de Razor. Para más información, consulte este problema de GitHub.
Propiedades
Las siguientes propiedades controlan el comportamiento del SDK de Razor como parte de la generación de un proyecto:
RazorCompileOnBuild
: si estrue
, compila y emite el ensamblado de Razor como parte de la generación del proyecto. Tiene como valor predeterminadotrue
.RazorCompileOnPublish
: si estrue
, compila y emite el ensamblado de Razor como parte de la publicación del proyecto. Tiene como valor predeterminadotrue
.
Para configurar las entradas y la salida del SDK de Razor se usan las propiedades y los elementos de la tabla siguiente.
Elementos | Descripción |
---|---|
RazorGenerate |
Elementos (archivos .cshtml ) que son entradas para la generación de código. |
RazorComponent |
Elementos (archivos .razor ) que son entradas para la generación de código de componentes de Razor. |
RazorCompile |
Elementos (archivos.cs ) que son entradas de los destinos de compilación de Razor. Use este objeto ItemGroup para especificar otros archivos que se compilen en el ensamblado de Razor. |
RazorTargetAssemblyAttribute |
Elementos que se usan para generar atributos de código para el ensamblado de Razor. Por ejemplo: RazorAssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute" _Parameter1="BuildSource" _Parameter2="https://learn.microsoft.com/"> |
RazorEmbeddedResource |
Elementos que se agregan como recursos incrustados al ensamblado de Razor generado. |
Propiedad. | Descripción |
---|---|
RazorTargetName |
Nombre de archivo (sin extensión) del ensamblado generado por Razor. |
RazorOutputPath |
Directorio de salida de Razor. |
RazorCompileToolset |
Se usa para determinar el conjunto de herramientas que se va a emplear para compilar el ensamblado de Razor. Valores válidos son Implicit , RazorSDK y PrecompilationTool . |
EnableDefaultContentItems | El valor predeterminado es true . Si es true , incluye archivos web.config, .json y .cshtml como contenido en el proyecto. Si la referencia se realizar a través de Microsoft.NET.Sdk.Web , también se incluyen todos los archivos bajo wwwroot y los archivos de configuración. |
EnableDefaultRazorGenerateItems |
Si es true , incluye los archivos .cshtml de los elementos Content en elementos RazorGenerate . |
GenerateRazorTargetAssemblyInfo |
Si es true , genera un archivo .cs que contiene los atributos especificados por RazorAssemblyAttribute e incluye el archivo en la salida de compilación. |
EnableDefaultRazorTargetAssemblyInfoAttributes |
Si es true , agrega a RazorAssemblyAttribute un conjunto predeterminado de atributos de ensamblado. |
CopyRazorGenerateFilesToPublishDirectory |
Si es true , copia los archivos ( .cshtml ) de los elementos RazorGenerate en el directorio de publicación. Normalmente, los archivos de Razor no son necesarios en una aplicación publicada si participan en la compilación en el momento de la compilación o la publicación. Tiene como valor predeterminado false . |
CopyRefAssembliesToPublishDirectory |
Si es true , copia los elementos de referencia del ensamblado en el directorio de publicación. Normalmente, los ensamblados de referencia no son necesarios en una aplicación publicada si la compilación de Razor tiene lugar en el momento de la compilación o la publicación. Establézcalo en true si la aplicación publicada requiere compilación en tiempo de ejecución. Por ejemplo, establezca el valor en true si la aplicación modifica archivos .cshtml en tiempo de ejecución o usa vistas insertadas. Tiene como valor predeterminado false . |
IncludeRazorContentInPack |
Si es true , todos los elementos de contenido de Razor (archivos .cshtml ) se marcan para incluirse en el paquete NuGet generado. Tiene como valor predeterminado false . |
EmbedRazorGenerateSources |
Si es true , agrega los elementos RazorGenerate (.cshtml ) como archivos incrustados al ensamblado de Razor generado. Tiene como valor predeterminado false . |
UseRazorBuildServer |
Si es true , usa un proceso de servidor de compilación persistente para descargar el trabajo de generación de código. El valor predeterminado es UseSharedCompilation . |
GenerateMvcApplicationPartsAssemblyAttributes |
Si es true , el SDK genera atributos adicionales usados por MVC en tiempo de ejecución para realizar la detección de elementos de la aplicación. |
DefaultWebContentItemExcludes |
Un patrón global para elementos que se van a excluir del grupo de elementos Content en proyectos destinados a Internet o el SDK de Razor. |
ExcludeConfigFilesFromBuildOutput |
Si es true , los archivos .config y .json no se copian en el directorio de salida de la compilación. |
AddRazorSupportForMvc |
Si es true , configura el SDK de Razor para agregar compatibilidad con la configuración de MVC necesaria al compilar aplicaciones que contienen vistas de MVC o Razor Pages. Esta propiedad se establece de forma implícita para proyectos de .NET Core 3.0 o versiones posteriores que tienen como destino el SDK Web |
RazorLangVersion |
Versión del lenguaje Razor de destino. |
Para más información sobre las propiedades, consulte Propiedades de MSBuild.
Destinos
El SDK de Razor define dos destinos principales:
RazorGenerate
: el código genera archivos.cs
a partir de elementosRazorGenerate
. Use la propiedadRazorGenerateDependsOn
para especificar más destinos que se puedan ejecutar antes o después de este destino.RazorCompile
: compila los archivos.cs
generados en un ensamblado de Razor. UseRazorCompileDependsOn
para especificar más destinos que se puedan ejecutar antes o después de este destino.RazorComponentGenerate
: el código genera archivos.cs
para elementosRazorComponent
. Use la propiedadRazorComponentGenerateDependsOn
para especificar más destinos que se puedan ejecutar antes o después de este destino.
Compilación en tiempo de ejecución de vistas de Razor
De forma predeterminada, el SDK de Razor no publica los ensamblados de referencia necesarios para realizar una compilación en tiempo de ejecución. Como consecuencia, se producen errores de compilación cuando el modelo de aplicación se basa en la compilación en tiempo de ejecución; por ejemplo, la aplicación usa vistas incrustadas o cambia vistas tras haber sido publicada. Establezca
CopyRefAssembliesToPublishDirectory
entrue
para seguir publicando ensamblados de referencia.En el caso de una aplicación web, asegúrese de que se destina al SDK
Microsoft.NET.Sdk.Web
.
Versión del lenguaje Razor
Si el destino es el SDK Microsoft.NET.Sdk.Web
, la versión del lenguaje Razor se deduce de la versión del marco de destino de la aplicación. En los proyectos que tienen como destino el SDK de Microsoft.NET.Sdk.Razor
o en el caso excepcional de que la aplicación requiera una versión del lenguaje Razor diferente al valor deducido, se puede configurar una versión si se establece la propiedad <RazorLangVersion>
en el archivo de proyecto de la aplicación:
<PropertyGroup>
<RazorLangVersion>{VERSION}</RazorLangVersion>
</PropertyGroup>
La versión del lenguaje Razor se integra estrechamente con la versión del runtime para la que se ha compilado. No se admite seleccionar como destino una versión del lenguaje que no está diseñada para el entorno de ejecución y es probable que genere errores de compilación.