作成者: Rick Anderson
概要
.NET 6 SDK には、 MSBuild SDK ( SDK) が含まれています。 Razor SDK には次の特徴があります。
- ASP.NET Core MVC ベースまたは Razor プロジェクト用の Blazor ファイルを含むプロジェクトのビルド、パッケージ化、および発行を行うために必要です。
-
Razor (
.cshtml
または.razor
) ファイルのコンパイルのカスタマイズを可能にする事前定義されたプロパティと項目のセットを含みます。
Razor SDK には、Content
属性が Include
および **\*.cshtml
glob パターンに設定された **\*.razor
項目が含まれています。 一致するファイルが発行されます。
必須コンポーネント
Razor SDK を使用する
ほとんどの Web アプリでは、明示的に Razor SDK を参照する必要がありません。
Razor SDK を使用して Razor ビューまたは Razor Pages を含むクラス ライブラリをビルドするには、Razor クラス ライブラリ (RCL) プロジェクト テンプレートを使用して開始することをお勧めします。
Blazor (.razor
) ファイルのビルドに使用する RCL では、少なくとも、Microsoft.AspNetCore.Components パッケージへの参照が必要です。
Razor ビューまたはページのビルドに使用する RCL (.cshtml
ファイル) は、少なくとも netcoreapp3.0
以降をターゲットにし、そのプロジェクト ファイル内には FrameworkReference
への がある必要があります。
プロパティ
Razor の SDK の動作は、プロジェクトをビルドする際に次のプロパティにより制御されます。
-
RazorCompileOnBuild
:true
の場合、プロジェクトをビルドする際に、Razor アセンブリがコンパイルおよび生成されます。 既定値はtrue
です。 -
RazorCompileOnPublish
:true
の場合、プロジェクトを発行する際に、Razor アセンブリがコンパイルおよび生成されます。 既定値はtrue
です。 -
UseRazorSourceGenerator
:既定値はtrue
です。 日時:true
- ソース生成を使用してコンパイルします。
-
<app_name>.Views.dll
は作成されません。 ビューは<app_name>.dll
に含まれます。 - .NET ホット リロードをサポートしています。
Razor SDK への入力および出力は、次の表のプロパティと項目を使用して構成されます。
項目 | 説明 |
---|---|
RazorGenerate |
コード生成への入力である項目要素 ( .cshtml ファイル) です。 |
RazorComponent |
.razor コンポーネントのコード生成で入力される項目要素 (Razor ファイル) です。 |
RazorCompile |
.cs のコンパイル対象に入力される項目要素 (Razor ファイル) です。
ItemGroup アセンブリに追加でコンパイルするファイルを指定するには、この Razor を使用します。 |
RazorEmbeddedResource |
生成される Razor アセンブリに埋め込みのリソースとして追加される項目要素です。 |
プロパティ | 説明 |
---|---|
RazorOutputPath |
Razor 出力ディレクトリ。 |
RazorCompileToolset |
Razor アセンブリをビルドするために使用するツールセットを決定するために使用します。 有効な値は Implicit 、RazorSDK 、PrecompilationTool です。 |
デフォルトコンテンツ項目を有効にする | 既定値は 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 の場合、生成された .cshtml アセンブリに、埋め込みファイルとして RazorGenerate (Razor) 項目が追加されます。 既定値は false です。 |
GenerateMvcApplicationPartsAssemblyAttributes |
.NET 6 以降では使用されません。 |
DefaultWebContentItemExcludes |
Web または Content SDK をターゲットとするプロジェクトの Razor 項目グループから除外する必要がある項目要素の glob パターン |
ExcludeConfigFilesFromBuildOutput |
true の場合、.config ファイルと .json ファイルがビルド出力ディレクトリにコピーされません。 |
AddRazorSupportForMvc |
true の場合、MVC ビューまたは Razor Pages を含むアプリケーションをビルドするときに必要な MVC 構成のサポートを追加するように、Razor SDK を構成します。 このプロパティは、Web SDK をターゲットとする .NET Core 3.0 以降のプロジェクトには暗黙的に設定されます |
RazorLangVersion |
ターゲットとする Razor 言語のバージョン。 |
EmitCompilerGeneratedFiles |
true に設定すると、生成されたソース ファイルがディスクに書き込まれます。
true に設定すると、コンパイラのデバッグ時に便利です。 既定では、 false です。 |
プロパティの詳細については、「MSBuild プロパティ」を参照してください。
Razor ビューの実行時のコンパイル
既定では、Razor SDK からは、実行時のコンパイルを実行するために必要な参照アセンブリは公開されません。 そのため、アプリケーション モデルが実行時のコンパイルに依存している場合には、コンパイルが失敗します。たとえば、アプリが公開後に埋め込まれたビューを使用したり、ビューを変更したりする場合です。
CopyRefAssembliesToPublishDirectory
をtrue
に設定して、参照アセンブリの公開を続行します。 コードの生成とコンパイルの両方が、コンパイラの 1 回の呼び出しでサポートされます。 アプリの種類と生成されたビューを含む 1 つのアセンブリが生成されます。Web アプリの場合は、アプリが
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 ベースまたは Razor プロジェクト用の Blazor ファイルを含むプロジェクトのビルド、パッケージ化、および発行を行うために必要です。
-
Razor (
.cshtml
または.razor
) ファイルのコンパイルのカスタマイズを可能にする事前定義されたターゲット、プロパティ、項目のセットを含みます。
Razor SDK には、Content
属性が Include
および **\*.cshtml
glob パターンに設定された **\*.razor
項目が含まれています。 一致するファイルが発行されます。
必須コンポーネント
Razor SDK を使用する
ほとんどの Web アプリでは、明示的に Razor SDK を参照する必要がありません。
Razor SDK を使用して Razor ビューまたは Razor Pages を含むクラス ライブラリをビルドするには、Razor クラス ライブラリ (RCL) プロジェクト テンプレートを使用して開始することをお勧めします。
Blazor (.razor
) ファイルのビルドに使用する RCL では、少なくとも、Microsoft.AspNetCore.Components パッケージへの参照が必要です。
Razor ビューまたはページのビルドに使用する RCL (.cshtml
ファイル) は、少なくとも netcoreapp3.0
以降をターゲットにし、そのプロジェクト ファイル内には FrameworkReference
への がある必要があります。
プロパティ
Razor の SDK の動作は、プロジェクトをビルドする際に次のプロパティにより制御されます。
-
RazorCompileOnBuild
:true
の場合、プロジェクトをビルドする際に、Razor アセンブリがコンパイルおよび生成されます。 既定値はtrue
です。 -
RazorCompileOnPublish
:true
の場合、プロジェクトを発行する際に、Razor アセンブリがコンパイルおよび生成されます。 既定値はtrue
です。
Razor SDK への入力および出力は、次の表のプロパティと項目を使用して構成されます。
警告
ASP.NET Core 3.0 以降では、プロジェクト ファイルで Razor または RazorCompileOnBuild
の MSBuild プロパティが無効になっている場合、MVC ビューまたは RazorCompileOnPublish
Pages は既定では提供されません。
Razor ファイルを処理するためにアプリがランタイム コンパイルに依存して場合は、アプリに パッケージへの明示的な参照を追加する必要があります。
項目 | 説明 |
---|---|
RazorGenerate |
コード生成への入力である項目要素 ( .cshtml ファイル) です。 |
RazorComponent |
.razor コンポーネントのコード生成で入力される項目要素 (Razor ファイル) です。 |
RazorCompile |
.cs のコンパイル対象に入力される項目要素 (Razor ファイル) です。
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 、RazorSDK 、PrecompilationTool です。 |
デフォルトコンテンツ項目を有効にする | 既定値は 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 の場合、生成された .cshtml アセンブリに、埋め込みファイルとして RazorGenerate (Razor) 項目が追加されます。 既定値は false です。 |
UseRazorBuildServer |
true の場合、コードの生成作業をオフロードするために、永続的なビルド サーバーが使用されます。 既定値は、UseSharedCompilation の値です。 |
GenerateMvcApplicationPartsAssemblyAttributes |
true の場合、アプリケーション パーツの検出を実行するために実行時に MVC によって使用される追加の属性が、SDK によって生成されます。 |
DefaultWebContentItemExcludes |
Web または Content SDK をターゲットとするプロジェクトの Razor 項目グループから除外する必要がある項目要素の glob パターン |
ExcludeConfigFilesFromBuildOutput |
true の場合、.config ファイルと .json ファイルがビルド出力ディレクトリにコピーされません。 |
AddRazorSupportForMvc |
true の場合、MVC ビューまたは Razor Pages を含むアプリケーションをビルドするときに必要な MVC 構成のサポートを追加するように、Razor SDK を構成します。 このプロパティは、Web SDK をターゲットとする .NET Core 3.0 以降のプロジェクトには暗黙的に設定されます |
RazorLangVersion |
ターゲットとする Razor 言語のバージョン。 |
プロパティの詳細については、「MSBuild プロパティ」を参照してください。
ターゲット
Razor SDK では、次の 2 つの主要なターゲットが定義されています。
-
RazorGenerate
: コードにより、.cs
項目要素からRazorGenerate
ファイルが生成されます。 このターゲットの前または後に実行できる追加のターゲットを指定するには、RazorGenerateDependsOn
プロパティを使用します。 -
RazorCompile
:生成された.cs
ファイルを、Razor アセンブリにコンパイルします。 このターゲットの前または後に実行できる追加のターゲットを指定するには、RazorCompileDependsOn
を使用します。 -
RazorComponentGenerate
: コードにより、.cs
項目要素向けにRazorComponent
ファイルが生成されます。 このターゲットの前または後に実行できる追加のターゲットを指定するには、RazorComponentGenerateDependsOn
プロパティを使用します。
Razor ビューの実行時のコンパイル
既定では、Razor SDK からは、実行時のコンパイルを実行するために必要な参照アセンブリは公開されません。 そのため、アプリケーション モデルが実行時のコンパイルに依存している場合には、コンパイルが失敗します。たとえば、アプリが公開後に埋め込まれたビューを使用したり、ビューを変更したりする場合です。
CopyRefAssembliesToPublishDirectory
をtrue
に設定して、参照アセンブリの公開を続行します。Web アプリの場合は、アプリが
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 には、Content
属性が Include
glob パターンに設定された **\*.cshtml
項目が含まれています。 一致するファイルが発行されます。
必須コンポーネント
Razor SDK を使用する
ほとんどの Web アプリでは、明示的に Razor SDK を参照する必要がありません。
Razor SDK を使用して Razor ビューまたは Razor Pages を含むクラス ライブラリを構築する方法は次のとおりです。
Microsoft.NET.Sdk.Razor
の代わりにMicrosoft.NET.Sdk
を使用します。<Project SDK="Microsoft.NET.Sdk.Razor"> <!-- omitted for brevity --> </Project>
一般に、
Microsoft.AspNetCore.Mvc
Pages や Razor ビューをビルドしてコンパイルするために必要な追加の依存関係を取得するために Razor へのパッケージ参照が必要とされます。 少なくとも、以下へのパッケージ参照をプロジェクトに追加する必要があります。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>
警告
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 の問題します。
プロパティ
Razor の SDK の動作は、プロジェクトをビルドする際に次のプロパティにより制御されます。
-
RazorCompileOnBuild
:true
の場合、プロジェクトをビルドする際に、Razor アセンブリがコンパイルおよび生成されます。 既定値はtrue
です。 -
RazorCompileOnPublish
:true
の場合、プロジェクトを発行する際に、Razor アセンブリがコンパイルおよび生成されます。 既定値はtrue
です。
Razor SDK への入力および出力は、次の表のプロパティと項目を使用して構成されます。
項目 | 説明 |
---|---|
RazorGenerate |
コード生成への入力である項目要素 ( .cshtml ファイル) です。 |
RazorComponent |
.razor コンポーネントのコード生成で入力される項目要素 (Razor ファイル) です。 |
RazorCompile |
.cs のコンパイル対象に入力される項目要素 (Razor ファイル) です。
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 、RazorSDK 、PrecompilationTool です。 |
デフォルトコンテンツ項目を有効にする | 既定値は 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 の場合、生成された .cshtml アセンブリに、埋め込みファイルとして RazorGenerate (Razor) 項目が追加されます。 既定値は false です。 |
UseRazorBuildServer |
true の場合、コードの生成作業をオフロードするために、永続的なビルド サーバーが使用されます。 既定値は、UseSharedCompilation の値です。 |
GenerateMvcApplicationPartsAssemblyAttributes |
true の場合、アプリケーション パーツの検出を実行するために実行時に MVC によって使用される追加の属性が、SDK によって生成されます。 |
DefaultWebContentItemExcludes |
Web または Content SDK をターゲットとするプロジェクトの Razor 項目グループから除外する必要がある項目要素の glob パターン |
ExcludeConfigFilesFromBuildOutput |
true の場合、.config ファイルと .json ファイルがビルド出力ディレクトリにコピーされません。 |
AddRazorSupportForMvc |
true の場合、MVC ビューまたは Razor Pages を含むアプリケーションをビルドするときに必要な MVC 構成のサポートを追加するように、Razor SDK を構成します。 このプロパティは、Web SDK をターゲットとする .NET Core 3.0 以降のプロジェクトには暗黙的に設定されます |
RazorLangVersion |
ターゲットとする Razor 言語のバージョン。 |
プロパティの詳細については、「MSBuild プロパティ」を参照してください。
ターゲット
Razor SDK では、次の 2 つの主要なターゲットが定義されています。
-
RazorGenerate
: コードにより、.cs
項目要素からRazorGenerate
ファイルが生成されます。 このターゲットの前または後に実行できる追加のターゲットを指定するには、RazorGenerateDependsOn
プロパティを使用します。 -
RazorCompile
:生成された.cs
ファイルを、Razor アセンブリにコンパイルします。 このターゲットの前または後に実行できる追加のターゲットを指定するには、RazorCompileDependsOn
を使用します。 -
RazorComponentGenerate
: コードにより、.cs
項目要素向けにRazorComponent
ファイルが生成されます。 このターゲットの前または後に実行できる追加のターゲットを指定するには、RazorComponentGenerateDependsOn
プロパティを使用します。
Razor ビューの実行時のコンパイル
既定では、Razor SDK からは、実行時のコンパイルを実行するために必要な参照アセンブリは公開されません。 そのため、アプリケーション モデルが実行時のコンパイルに依存している場合には、コンパイルが失敗します。たとえば、アプリが公開後に埋め込まれたビューを使用したり、ビューを変更したりする場合です。
CopyRefAssembliesToPublishDirectory
をtrue
に設定して、参照アセンブリの公開を続行します。Web アプリの場合は、アプリが
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