ASP.NET Core Razor SDK

작성자: Rick Anderson

개요

.NET 6.0 SDK에는 Microsoft.NET.Sdk.Razor MSBuild SDK(Razor SDK)가 포함되어 있습니다. Razor SDK:

  • ASP.NET Core MVC 기반 또는 Blazor 프로젝트용 Razor 파일을 포함하는 프로젝트를 빌드, 패키지 및 게시하는 데 필요합니다.
  • 사전 정의된 일련의 속성, 그리고 Razor(.cshtml 또는 .razor)파일 컴파일을 사용자 지정할 수 있는 항목이 포함됩니다.

Razor SDK에는 Include 특성이 **\*.cshtml**\*.razor 와일드카드 사용 패턴으로 설정된 Content 항목이 포함되어 있습니다. 일치 파일이 게시됩니다.

필수 조건

.NET 6.0 SDK

Razor SDK 사용

대부분의 웹앱은 Razor SDK를 명시적으로 참조할 필요가 없습니다.

Razor SDK를 사용하여 Razor 뷰나 Razor Pages를 포함하는 클래스 라이브러리를 빌드하려면 RCL(Razor 클래스 라이브러리) 프로젝트 템플릿을 사용하는 것이 좋습니다. Blazor(.razor) 파일을 빌드하는 데 사용되는 RCL에는 적어도 Microsoft.AspNetCore.Components 패키지에 대한 참조가 필요합니다. Razor 뷰 또는 페이지(.cshtml 파일)를 빌드하는 데 사용되는 RCL은 적어도 netcoreapp3.0 이상을 대상으로 지정해야 하며 해당 프로젝트 파일에서 Microsoft.AspNetCore.App 메타패키지에 대한 FrameworkReference가 있습니다.

속성

다음 속성은 Razor의 SDK 동작을 프로젝트 빌드의 일부로 제어합니다.

  • RazorCompileOnBuildtrue: 프로젝트 빌드의 일부로 어셈블리를 Razor 컴파일하고 내보내는 경우 기본값은 true입니다.
  • RazorCompileOnPublish: 프로젝트 게시의 일부로 어셈블리를 Razor 컴파일하고 내보내는 경우 true 기본값은 true입니다.
  • UseRazorSourceGenerator: 기본값은 .입니다 true. 시간: true
    • 원본 생성을 사용하여 컴파일합니다.
    • 를 만들지 <app_name>.Views.dll않습니다. 보기는 .에 포함됩니다 <app_name>.dll.
    • .NET 핫 다시 로드 지원합니다.

다음 표의 속성 및 항목은 Razor SDK에 대한 입력 및 출력을 구성하는 데 사용됩니다.

항목 설명
RazorGenerate 코드 생성에 대한 입력인 항목 요소(.cshtml 파일)입니다.
RazorComponent Razor 구성 요소 코드 생성에 입력되는 항목 요소(.razor 파일)입니다.
RazorCompile Razor 컴파일 대상에 입력되는 항목 요소(.cs 파일)입니다. 이 ItemGroup을 사용하여 Razor 어셈블리에 컴파일할 추가 파일을 지정합니다.
RazorEmbeddedResource 생성된 Razor 어셈블리에 포함 리소스로 추가된 항목 요소입니다.
속성 설명
RazorOutputPath Razor 출력 디렉터리입니다.
RazorCompileToolset Razor 어셈블리를 빌드하는 데 사용되는 도구 집합을 결정하는 데 사용됩니다. 유효한 값은 Implicit, RazorSDKPrecompilationTool입니다.
EnableDefaultContentItems 기본값은 true입니다. 이면 trueweb.config.json.cshtml 파일을 프로젝트의 콘텐츠로 포함합니다. Microsoft.NET.Sdk.Web를 통해 참조되는 경우 wwwroot의 파일 및 구성 파일도 포함됩니다.
EnableDefaultRazorGenerateItems 이면 true항목 RazorGenerateContent 파일이 포함 .cshtml 됩니다.
GenerateRazorTargetAssemblyInfo .NET 6 이상에서 사용되지 않습니다.
EnableDefaultRazorTargetAssemblyInfoAttributes .NET 6 이상에서 사용되지 않습니다.
CopyRazorGenerateFilesToPublishDirectory 이 경우 true항목(.cshtml) 파일을 게시 디렉터리에 복사 RazorGenerate 합니다. 일반적으로 Razor 파일은 빌드 시간 또는 게시 시간에 컴파일에 참여하는 경우 게시된 앱에 필요하지 않습니다. 기본값은 false입니다.
PreserveCompilationReferences true인 경우, 참조 어셈블리 항목을 게시 디렉터리에 복사합니다. 일반적으로 참조 어셈블리는 Razor 컴파일이 빌드 시간 또는 게시 시간에 발생하는 경우 게시된 앱에 필요하지 않습니다. 게시된 앱에 런타임 컴파일이 필요한 경우 true로 설정합니다. 예를 들어, 앱이 런타임에 .cshtml 파일을 수정하거나 포함된 보기를 사용하는 경우 값을 true로 설정합니다. 기본값은 false입니다.
IncludeRazorContentInPack 이 경우 true모든 Razor 콘텐츠 항목(.cshtml 파일)이 생성된 NuGet 패키지에 포함됨으로 표시됩니다. 기본값은 false입니다.
EmbedRazorGenerateSources true인 경우, RazorGenerate(.cshtml) 항목을 생성된 Razor 어셈블리에 포함된 파일로 추가합니다. 기본값은 false입니다.
GenerateMvcApplicationPartsAssemblyAttributes .NET 6 이상에서 사용되지 않습니다.
DefaultWebContentItemExcludes 웹 또는 Razor SDK를 대상으로 하는 프로젝트의 Content 항목 그룹에서 제외될 항목 요소에 대한 globbing 패턴입니다.
ExcludeConfigFilesFromBuildOutput true인 경우 .config.json 파일은 빌드 출력 디렉터리에 복사되지 않습니다.
AddRazorSupportForMvc true인 경우 MVC 뷰나 Razor Pages를 포함하는 애플리케이션을 빌드할 때 필요한 MVC 구성에 대한 지원을 추가하도록 Razor SDK를 구성합니다. 이 속성은 웹 SDK를 대상으로 하는 .NET Core 3.0 이상 프로젝트용으로 암시적으로 설정됩니다.
RazorLangVersion 대상으로 지정할 Razor 언어의 버전입니다.
EmitCompilerGeneratedFiles true로 설정하면 생성된 소스 파일이 디스크에 기록됩니다. true로 설정하면 컴파일러를 디버깅할 때 유용합니다. 기본값은 false입니다.

속성에 대한 자세한 내용은 MSBuild 속성을 참조하세요.

Razor 뷰의 런타임 컴파일

  • 기본적으로 Razor SDK는 런타임 컴파일을 수행하는 데 필요한 참조 어셈블리를 게시하지 않습니다. 이로 인해 애플리케이션 모델이 런타임 컴파일을 사용하는 경우 컴파일 오류가 발생합니다(예: 앱이 게시된 후에 앱에서는 포함된 보기 또는 변경 내용 보기를 사용함). CopyRefAssembliesToPublishDirectorytrue로 설정하여 계속 참조 어셈블리를 게시합니다. 코드 생성과 컴파일 모두 컴파일러에 대한 단일 호출에서 지원됩니다. 앱 유형 및 생성된 뷰를 포함하는 단일 어셈블리가 생성됩니다.

  • 웹앱의 경우 앱이 Microsoft.NET.Sdk.Web SDK를 대상으로 지정하도록 합니다.

Razor 언어 버전

Microsoft.NET.Sdk.Web SDK를 대상으로 지정하는 경우 앱의 대상 프레임워크 버전에서 Razor 언어 버전이 유추됩니다. Microsoft.NET.Sdk.Razor SDK를 대상으로 하는 프로젝트 또는 앱이 유추된 값과는 다른 Razor 언어 버전이 필요한 드문 경우에 앱의 프로젝트 파일에서 <RazorLangVersion> 속성을 설정하여 버전을 구성할 수 있습니다.

<PropertyGroup>
  <RazorLangVersion>{VERSION}</RazorLangVersion>
</PropertyGroup>

Razor의 언어 버전은 빌드된 런타임 버전과 긴밀하게 통합됩니다. 런타임용으로 디자인된 언어 버전을 대상으로 하는 것은 지원되지 않으며 빌드 오류가 발생할 수 있습니다.

추가 리소스

.NET Core 2.1 SDK 이상에는 Microsoft.NET.Sdk.Razor MSBuild SDK(Razor SDK)가 포함되어 있습니다. Razor SDK:

  • ASP.NET Core MVC 기반 또는 Blazor 프로젝트용 Razor 파일을 포함하는 프로젝트를 빌드, 패키지 및 게시하는 데 필요합니다.
  • 사전 정의된 일련의 속성, 그리고 Razor(.cshtml 또는 .razor) 파일 컴파일을 사용자 지정할 수 있는 항목이 포함됩니다.

Razor SDK에는 Include 특성이 **\*.cshtml**\*.razor 와일드카드 사용 패턴으로 설정된 Content 항목이 포함되어 있습니다. 일치 파일이 게시됩니다.

필수 조건

.NET Core 2.1 SDK 이상

Razor SDK 사용

대부분의 웹앱은 Razor SDK를 명시적으로 참조할 필요가 없습니다.

Razor SDK를 사용하여 Razor 뷰나 Razor Pages를 포함하는 클래스 라이브러리를 빌드하려면 RCL(Razor 클래스 라이브러리) 프로젝트 템플릿을 사용하는 것이 좋습니다. Blazor(.razor) 파일을 빌드하는 데 사용되는 RCL에는 적어도 Microsoft.AspNetCore.Components 패키지에 대한 참조가 필요합니다. Razor 뷰 또는 페이지(.cshtml 파일)를 빌드하는 데 사용되는 RCL은 적어도 netcoreapp3.0 이상을 대상으로 지정해야 하며 해당 프로젝트 파일에서 Microsoft.AspNetCore.App 메타패키지에 대한 FrameworkReference가 있습니다.

속성

다음 속성은 Razor의 SDK 동작을 프로젝트 빌드의 일부로 제어합니다.

  • RazorCompileOnBuildtrue: 프로젝트 빌드의 일부로 어셈블리를 Razor 컴파일하고 내보내는 경우 기본값은 true입니다.
  • RazorCompileOnPublish: 프로젝트 게시의 일부로 어셈블리를 Razor 컴파일하고 내보내는 경우 true 기본값은 true입니다.

다음 표의 속성 및 항목은 Razor SDK에 대한 입력 및 출력을 구성하는 데 사용됩니다.

Warning

ASP.NET Core 3.0부터 프로젝트 파일의 RazorCompileOnBuild 또는 RazorCompileOnPublish MSBuild 속성을 사용할 수 없는 경우 MVC 뷰 또는 Razor Pages가 기본적으로 제공되지 않습니다. 애플리케이션은 Microsoft.AspNetCore.MvcRazor.에 대한 명시적 참조를 추가해야 합니다. 앱이 런타임 컴파일을 사용하여 파일을 처리하는 .cshtml 경우 RuntimeCompilation 패키지입니다.

항목 설명
RazorGenerate 코드 생성에 대한 입력인 항목 요소(.cshtml 파일)입니다.
RazorComponent Razor 구성 요소 코드 생성에 입력되는 항목 요소(.razor 파일)입니다.
RazorCompile Razor 컴파일 대상에 입력되는 항목 요소(.cs 파일)입니다. 이 ItemGroup을 사용하여 Razor 어셈블리에 컴파일할 추가 파일을 지정합니다.
RazorTargetAssemblyAttribute 코드에 사용된 항목 요소는 Razor 어셈블리의 특성을 생성합니다. 예:
RazorAssemblyAttribute
Include="System.Reflection.AssemblyMetadataAttribute"
_Parameter1="BuildSource" _Parameter2="https://learn.microsoft.com/">
RazorEmbeddedResource 생성된 Razor 어셈블리에 포함 리소스로 추가된 항목 요소입니다.
속성 설명
RazorTargetName Razor에서 생성한 어셈블리의 파일 이름(확장명 제외)입니다.
RazorOutputPath Razor 출력 디렉터리입니다.
RazorCompileToolset Razor 어셈블리를 빌드하는 데 사용되는 도구 집합을 결정하는 데 사용됩니다. 유효한 값은 Implicit, RazorSDKPrecompilationTool입니다.
EnableDefaultContentItems 기본값은 true입니다. 이면 trueweb.config.json.cshtml 파일을 프로젝트의 콘텐츠로 포함합니다. Microsoft.NET.Sdk.Web를 통해 참조되는 경우 wwwroot의 파일 및 구성 파일도 포함됩니다.
EnableDefaultRazorGenerateItems 이면 true항목 RazorGenerateContent 파일이 포함 .cshtml 됩니다.
GenerateRazorTargetAssemblyInfo true인 경우 RazorAssemblyAttribute로 지정된 특성을 포함하는 .cs 파일을 생성하고 이 파일을 컴파일 출력에 포함시킵니다.
EnableDefaultRazorTargetAssemblyInfoAttributes true인 경우, RazorAssemblyAttribute에 어셈블리 특성의 기본 집합을 추가합니다.
CopyRazorGenerateFilesToPublishDirectory 이 경우 true항목(.cshtml) 파일을 게시 디렉터리에 복사 RazorGenerate 합니다. 일반적으로 Razor 파일은 빌드 시간 또는 게시 시간에 컴파일에 참여하는 경우 게시된 앱에 필요하지 않습니다. 기본값은 false입니다.
PreserveCompilationReferences true인 경우, 참조 어셈블리 항목을 게시 디렉터리에 복사합니다. 일반적으로 참조 어셈블리는 Razor 컴파일이 빌드 시간 또는 게시 시간에 발생하는 경우 게시된 앱에 필요하지 않습니다. 게시된 앱에 런타임 컴파일이 필요한 경우 true로 설정합니다. 예를 들어, 앱이 런타임에 .cshtml 파일을 수정하거나 포함된 보기를 사용하는 경우 값을 true로 설정합니다. 기본값은 false입니다.
IncludeRazorContentInPack 이 경우 true모든 Razor 콘텐츠 항목(.cshtml 파일)이 생성된 NuGet 패키지에 포함됨으로 표시됩니다. 기본값은 false입니다.
EmbedRazorGenerateSources true인 경우, RazorGenerate(.cshtml) 항목을 생성된 Razor 어셈블리에 포함된 파일로 추가합니다. 기본값은 false입니다.
UseRazorBuildServer true인 경우, 영구적 빌드 서버 프로세스를 사용하여 코드 생성 작업을 오프로드합니다. 기본값은 UseSharedCompilation입니다.
GenerateMvcApplicationPartsAssemblyAttributes true인 경우 SDK는 런타임에 MVC에서 애플리케이션 파트 검색을 수행하는 데 사용되는 추가 특성을 생성합니다.
DefaultWebContentItemExcludes 웹 또는 Razor SDK를 대상으로 하는 프로젝트의 Content 항목 그룹에서 제외될 항목 요소에 대한 globbing 패턴입니다.
ExcludeConfigFilesFromBuildOutput true인 경우 .config.json 파일은 빌드 출력 디렉터리에 복사되지 않습니다.
AddRazorSupportForMvc true인 경우 MVC 뷰나 Razor Pages를 포함하는 애플리케이션을 빌드할 때 필요한 MVC 구성에 대한 지원을 추가하도록 Razor SDK를 구성합니다. 이 속성은 웹 SDK를 대상으로 하는 .NET Core 3.0 이상 프로젝트용으로 암시적으로 설정됩니다.
RazorLangVersion 대상으로 지정할 Razor 언어의 버전입니다.

속성에 대한 자세한 내용은 MSBuild 속성을 참조하세요.

Targets

Razor SDK는 두 기본 대상을 정의합니다.

  • RazorGenerate: 코드는 RazorGenerate 항목 요소에서 .cs 파일을 생성합니다. 이 대상 전후에 실행할 수 있는 추가 대상을 지정하려면 RazorGenerateDependsOn 속성을 사용합니다.
  • RazorCompile: 생성된 .cs 파일을 어셈블리로 컴파일합니다 Razor . 이 대상 전후에 실행할 수 있는 추가 대상을 지정하려면 RazorCompileDependsOn을 사용합니다.
  • RazorComponentGenerate: 코드는 RazorComponent 항목 요소에 대한 .cs 파일을 생성합니다. 이 대상 전후에 실행할 수 있는 추가 대상을 지정하려면 RazorComponentGenerateDependsOn 속성을 사용합니다.

Razor 뷰의 런타임 컴파일

  • 기본적으로 Razor SDK는 런타임 컴파일을 수행하는 데 필요한 참조 어셈블리를 게시하지 않습니다. 이로 인해 애플리케이션 모델이 런타임 컴파일을 사용하는 경우 컴파일 오류가 발생합니다(예: 앱이 게시된 후에 앱에서는 포함된 보기 또는 변경 내용 보기를 사용함). CopyRefAssembliesToPublishDirectorytrue로 설정하여 계속 참조 어셈블리를 게시합니다.

  • 웹앱의 경우 앱이 Microsoft.NET.Sdk.Web SDK를 대상으로 지정하도록 합니다.

Razor 언어 버전

Microsoft.NET.Sdk.Web SDK를 대상으로 지정하는 경우 앱의 대상 프레임워크 버전에서 Razor 언어 버전이 유추됩니다. Microsoft.NET.Sdk.Razor SDK를 대상으로 하는 프로젝트 또는 앱이 유추된 값과는 다른 Razor 언어 버전이 필요한 드문 경우에 앱의 프로젝트 파일에서 <RazorLangVersion> 속성을 설정하여 버전을 구성할 수 있습니다.

<PropertyGroup>
  <RazorLangVersion>{VERSION}</RazorLangVersion>
</PropertyGroup>

Razor의 언어 버전은 빌드된 런타임 버전과 긴밀하게 통합됩니다. 런타임용으로 디자인된 언어 버전을 대상으로 하는 것은 지원되지 않으며 빌드 오류가 발생할 수 있습니다.

추가 리소스

  • ASP.NET Core MVC 기반 프로젝트용 Razor 파일을 포함하는 프로젝트의 빌드, 패키징 및 게시와 관련된 환경을 표준화합니다.
  • Razor 파일 컴파일의 사용자 지정을 허용하는 사전 정의된 대상, 속성 및 항목 집합이 포함됩니다.

Razor SDK에는 Include 특성이 **\*.cshtml 와일드카드 사용 패턴으로 설정된 Content 항목이 포함되어 있습니다. 일치 파일이 게시됩니다.

필수 조건

.NET Core 2.1 SDK 이상

Razor SDK 사용

대부분의 웹앱은 Razor SDK를 명시적으로 참조할 필요가 없습니다.

Razor SDK를 사용하여 Razor 뷰 또는 Razor Pages를 포함하는 클래스 라이브러리를 빌드하려면 다음을 수행 및 확인합니다.

  • Microsoft.NET.Sdk 대신 Microsoft.NET.Sdk.Razor를 사용합니다.

    <Project SDK="Microsoft.NET.Sdk.Razor">
      <!-- omitted for brevity -->
    </Project>
    
  • 일반적으로 Razor Pages 및 Razor 뷰를 빌드하고 컴파일하는 데 필요한 추가 종속성을 수신하려면 Microsoft.AspNetCore.Mvc에 대한 패키지 참조가 필요합니다. 최소한 프로젝트는 다음에 패키지 참조를 추가해야 합니다.

    • Microsoft.AspNetCore.Razor.Design
    • Microsoft.AspNetCore.Mvc.Razor.Extensions
    • Microsoft.AspNetCore.Mvc.Razor

    Microsoft.AspNetCore.Razor.Design 패키지는 프로젝트에 대한 Razor 컴파일 작업 및 대상을 제공합니다.

    이전 패키지는 Microsoft.AspNetCore.Mvc에 포함되어 있습니다. 다음 태그에서는 Razor SDK를 사용하여 ASP.NET Core Razor Pages 앱용 Razor 파일을 빌드하는 프로젝트 파일을 보여 줍니다.

    <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.DesignMicrosoft.AspNetCore.Mvc.Razor.Extensions 패키지는 Microsoft.AspNetCore.App 메타패키지에 포함되어 있습니다. 그러나 더 낮은 버전의 Microsoft.AspNetCore.App 패키지 참조는 최신 Microsoft.AspNetCore.Razor.Design 버전을 포함하지 않는 앱에 대한 메타패키지를 제공합니다. 프로젝트는 Razor에 대한 최신 빌드 타임 수정 사항이 포함되도록 일관된 Microsoft.AspNetCore.Razor.Design 버전(또는 Microsoft.AspNetCore.Mvc)을 참조해야 합니다. 자세한 내용은 GitHub 이슈를 참조하세요.

속성

다음 속성은 Razor의 SDK 동작을 프로젝트 빌드의 일부로 제어합니다.

  • RazorCompileOnBuildtrue: 프로젝트 빌드의 일부로 어셈블리를 Razor 컴파일하고 내보내는 경우 기본값은 true입니다.
  • RazorCompileOnPublish: 프로젝트 게시의 일부로 어셈블리를 Razor 컴파일하고 내보내는 경우 true 기본값은 true입니다.

다음 표의 속성 및 항목은 Razor SDK에 대한 입력 및 출력을 구성하는 데 사용됩니다.

항목 설명
RazorGenerate 코드 생성에 대한 입력인 항목 요소(.cshtml 파일)입니다.
RazorComponent Razor 구성 요소 코드 생성에 입력되는 항목 요소(.razor 파일)입니다.
RazorCompile Razor 컴파일 대상에 입력되는 항목 요소(.cs 파일)입니다. 이 ItemGroup을 사용하여 Razor 어셈블리에 컴파일할 추가 파일을 지정합니다.
RazorTargetAssemblyAttribute 코드에 사용된 항목 요소는 Razor 어셈블리의 특성을 생성합니다. 예:
RazorAssemblyAttribute
Include="System.Reflection.AssemblyMetadataAttribute"
_Parameter1="BuildSource" _Parameter2="https://learn.microsoft.com/">
RazorEmbeddedResource 생성된 Razor 어셈블리에 포함 리소스로 추가된 항목 요소입니다.
속성 설명
RazorTargetName Razor에서 생성한 어셈블리의 파일 이름(확장명 제외)입니다.
RazorOutputPath Razor 출력 디렉터리입니다.
RazorCompileToolset Razor 어셈블리를 빌드하는 데 사용되는 도구 집합을 결정하는 데 사용됩니다. 유효한 값은 Implicit, RazorSDKPrecompilationTool입니다.
EnableDefaultContentItems 기본값은 true입니다. 이면 trueweb.config.json.cshtml 파일을 프로젝트의 콘텐츠로 포함합니다. Microsoft.NET.Sdk.Web를 통해 참조되는 경우 wwwroot의 파일 및 구성 파일도 포함됩니다.
EnableDefaultRazorGenerateItems 이면 true항목 RazorGenerateContent 파일이 포함 .cshtml 됩니다.
GenerateRazorTargetAssemblyInfo true인 경우 RazorAssemblyAttribute로 지정된 특성을 포함하는 .cs 파일을 생성하고 이 파일을 컴파일 출력에 포함시킵니다.
EnableDefaultRazorTargetAssemblyInfoAttributes true인 경우, RazorAssemblyAttribute에 어셈블리 특성의 기본 집합을 추가합니다.
CopyRazorGenerateFilesToPublishDirectory 이 경우 true항목(.cshtml) 파일을 게시 디렉터리에 복사 RazorGenerate 합니다. 일반적으로 Razor 파일은 빌드 시간 또는 게시 시간에 컴파일에 참여하는 경우 게시된 앱에 필요하지 않습니다. 기본값은 false입니다.
CopyRefAssembliesToPublishDirectory true인 경우, 참조 어셈블리 항목을 게시 디렉터리에 복사합니다. 일반적으로 참조 어셈블리는 Razor 컴파일이 빌드 시간 또는 게시 시간에 발생하는 경우 게시된 앱에 필요하지 않습니다. 게시된 앱에 런타임 컴파일이 필요한 경우 true로 설정합니다. 예를 들어, 앱이 런타임에 .cshtml 파일을 수정하거나 포함된 보기를 사용하는 경우 값을 true로 설정합니다. 기본값은 false입니다.
IncludeRazorContentInPack 이 경우 true모든 Razor 콘텐츠 항목(.cshtml 파일)이 생성된 NuGet 패키지에 포함됨으로 표시됩니다. 기본값은 false입니다.
EmbedRazorGenerateSources true인 경우, RazorGenerate(.cshtml) 항목을 생성된 Razor 어셈블리에 포함된 파일로 추가합니다. 기본값은 false입니다.
UseRazorBuildServer true인 경우, 영구적 빌드 서버 프로세스를 사용하여 코드 생성 작업을 오프로드합니다. 기본값은 UseSharedCompilation입니다.
GenerateMvcApplicationPartsAssemblyAttributes true인 경우 SDK는 런타임에 MVC에서 애플리케이션 파트 검색을 수행하는 데 사용되는 추가 특성을 생성합니다.
DefaultWebContentItemExcludes 웹 또는 Razor SDK를 대상으로 하는 프로젝트의 Content 항목 그룹에서 제외될 항목 요소에 대한 globbing 패턴입니다.
ExcludeConfigFilesFromBuildOutput true인 경우 .config.json 파일은 빌드 출력 디렉터리에 복사되지 않습니다.
AddRazorSupportForMvc true인 경우 MVC 뷰나 Razor Pages를 포함하는 애플리케이션을 빌드할 때 필요한 MVC 구성에 대한 지원을 추가하도록 Razor SDK를 구성합니다. 이 속성은 웹 SDK를 대상으로 하는 .NET Core 3.0 이상 프로젝트용으로 암시적으로 설정됩니다.
RazorLangVersion 대상으로 지정할 Razor 언어의 버전입니다.

속성에 대한 자세한 내용은 MSBuild 속성을 참조하세요.

Targets

Razor SDK는 두 기본 대상을 정의합니다.

  • RazorGenerate: 코드는 RazorGenerate 항목 요소에서 .cs 파일을 생성합니다. 이 대상 전후에 실행할 수 있는 추가 대상을 지정하려면 RazorGenerateDependsOn 속성을 사용합니다.
  • RazorCompile: 생성된 .cs 파일을 어셈블리로 컴파일합니다 Razor . 이 대상 전후에 실행할 수 있는 추가 대상을 지정하려면 RazorCompileDependsOn을 사용합니다.
  • RazorComponentGenerate: 코드는 RazorComponent 항목 요소에 대한 .cs 파일을 생성합니다. 이 대상 전후에 실행할 수 있는 추가 대상을 지정하려면 RazorComponentGenerateDependsOn 속성을 사용합니다.

Razor 뷰의 런타임 컴파일

  • 기본적으로 Razor SDK는 런타임 컴파일을 수행하는 데 필요한 참조 어셈블리를 게시하지 않습니다. 이로 인해 애플리케이션 모델이 런타임 컴파일을 사용하는 경우 컴파일 오류가 발생합니다(예: 앱이 게시된 후에 앱에서는 포함된 보기 또는 변경 내용 보기를 사용함). CopyRefAssembliesToPublishDirectorytrue로 설정하여 계속 참조 어셈블리를 게시합니다.

  • 웹앱의 경우 앱이 Microsoft.NET.Sdk.Web SDK를 대상으로 지정하도록 합니다.

Razor 언어 버전

Microsoft.NET.Sdk.Web SDK를 대상으로 지정하는 경우 앱의 대상 프레임워크 버전에서 Razor 언어 버전이 유추됩니다. Microsoft.NET.Sdk.Razor SDK를 대상으로 하는 프로젝트 또는 앱이 유추된 값과는 다른 Razor 언어 버전이 필요한 드문 경우에 앱의 프로젝트 파일에서 <RazorLangVersion> 속성을 설정하여 버전을 구성할 수 있습니다.

<PropertyGroup>
  <RazorLangVersion>{VERSION}</RazorLangVersion>
</PropertyGroup>

Razor의 언어 버전은 빌드된 런타임 버전과 긴밀하게 통합됩니다. 런타임용으로 디자인된 언어 버전을 대상으로 하는 것은 지원되지 않으며 빌드 오류가 발생할 수 있습니다.

추가 리소스