Comparteix a través de


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

SDK de .NET 6.0

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 es true, compila y emite el ensamblado de Razor como parte de la generación del proyecto. Tiene como valor predeterminado true.
  • RazorCompileOnPublish: si es true, compila y emite el ensamblado de Razor como parte de la publicación del proyecto. Tiene como valor predeterminado true.
  • UseRazorSourceGenerator: Tiene como valor predeterminado true. 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 en true 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 es true, compila y emite el ensamblado de Razor como parte de la generación del proyecto. Tiene como valor predeterminado true.
  • RazorCompileOnPublish: si es true, compila y emite el ensamblado de Razor como parte de la publicación del proyecto. Tiene como valor predeterminado true.

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 elementos RazorGenerate. Use la propiedad RazorGenerateDependsOn 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. Use RazorCompileDependsOn para especificar más destinos que se puedan ejecutar antes o después de este destino.
  • RazorComponentGenerate: el código genera archivos .cs para elementos RazorComponent. Use la propiedad RazorComponentGenerateDependsOn 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 en true 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 de Microsoft.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 es true, compila y emite el ensamblado de Razor como parte de la generación del proyecto. Tiene como valor predeterminado true.
  • RazorCompileOnPublish: si es true, compila y emite el ensamblado de Razor como parte de la publicación del proyecto. Tiene como valor predeterminado true.

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 elementos RazorGenerate. Use la propiedad RazorGenerateDependsOn 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. Use RazorCompileDependsOn para especificar más destinos que se puedan ejecutar antes o después de este destino.
  • RazorComponentGenerate: el código genera archivos .cs para elementos RazorComponent. Use la propiedad RazorComponentGenerateDependsOn 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 en true 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