ASP.NET Core Razor SDK
Von Rick Anderson
Übersicht
Das .NET 6.0 SDK enthält das Microsoft.NET.Sdk.Razor
MSBuild SDK (Razor SDK). Das Razor SDK...
- ist zum Erstellen, Packen und Veröffentlichen von Paketen erforderlich, die Razor-Dateien für ASP.NET Core MVC-basierte oder Blazor-Projekte enthalten.
- Enthält vordefinierte Eigenschaften sowie Elemente, die das Anpassen der Razor-Dateien (
.cshtml
oder.razor
) ermöglichen.
Das Razor SDK enthält Content
-Elemente mit Include
-Attributen, die auf die **\*.cshtml
- und **\*.razor
-Globmuster festgelegt sind. Übereinstimmende Dateien werden veröffentlicht.
Voraussetzungen
Verwenden des Razor SDK
Die meisten Web-Apps müssen nicht explizit auf das Razor SDK verweisen.
Damit Sie das Razor SDK zur Erstellung von Klassenbibliotheken mit Razor Views oder Razor Pages verwenden können, wird empfohlen, mit der Projektvorlage für die Razor-Klassenbibliothek (Razor Class Library, RCL) zu beginnen. Eine RCL, die zum Erstellen von Blazor-Dateien (.razor
) verwendet wird, erfordert mindestens einen Verweis auf das Paket Microsoft.AspNetCore.Components. Eine RCL, die zum Erstellen von Razor-Ansichten oder -Seiten (.cshtml
-Dateien) verwendet wird, erfordert mindestens die Ausrichtung auf netcoreapp3.0
oder höher und ein FrameworkReference
-Element für das Microsoft.AspNetCore.App-Metapaket in der Projektdatei.
Eigenschaften
Die folgenden Eigenschaften steuern das Verhalten des Razor SDK im Rahmen eines Projektbuilds:
RazorCompileOnBuild
: Kompiliert die Razor-Assembly im Rahmen der Projekterstellung und gibt sie aus, wenntrue
festgelegt wird. Wird standardmäßig auftrue
festgelegt.RazorCompileOnPublish
: Kompiliert die Razor-Assembly im Rahmen der Projektveröffentlichung und gibt sie aus, wenntrue
festgelegt wird. Wird standardmäßig auftrue
festgelegt.UseRazorSourceGenerator
: Wird standardmäßig auftrue
festgelegt. Datum:true
- Kompiliert mithilfe der Quellgenerierung
- Erstellt nicht
<app_name>.Views.dll
. Ansichten sind in<app_name>.dll
enthalten. - Unterstützt .NET Hot Reload.
Die Eigenschaften und Elemente in der folgenden Tabelle werden zum Konfigurieren der Eingabe und Ausgabe an das Razor SDK verwendet.
Elemente | BESCHREIBUNG |
---|---|
RazorGenerate |
Item-Elemente (.cshtml -Dateien), die Eingaben für die Codegenerierung sind. |
RazorComponent |
Item-Elemente (.razor -Dateien), die Eingaben für die Codegenerierung für Razor-Komponenten sind. |
RazorCompile |
Item-Elemente (.cs -Dateien), die Eingaben für Razor-Kompilierungsziele sind. Verwenden Sie dieses ItemGroup -Element, um zusätzliche Dateien für die Kompilierung in die Razor-Assembly anzugeben. |
RazorEmbeddedResource |
Item-Elemente, die als eingebettete Ressourcen in die generierte Razor-Assembly eingefügt werden. |
Eigenschaft | Beschreibung |
---|---|
RazorOutputPath |
Das Razor-Ausgabeverzeichnis. |
RazorCompileToolset |
Wird verwendet, um das Toolset für die Erstellung der Razor-Assembly zu bestimmen. Gültige Werte sind Implicit , RazorSDK und PrecompilationTool . |
EnableDefaultContentItems | Der Standardwert ist true . Bei true werden web.config-, .json - und .cshtml -Dateien als Inhalt in das Projekt einbezogen. Bei einem Verweis über Microsoft.NET.Sdk.Web sind auch Dateien unter wwwroot und Konfigurationsdateien enthalten. |
EnableDefaultRazorGenerateItems |
Enthält .cshtml -Dateien aus Content -Elementen in RazorGenerate -Elementen, wenn true festgelegt ist. |
GenerateRazorTargetAssemblyInfo |
Dies wird ab .NET 6 nicht verwendet. |
EnableDefaultRazorTargetAssemblyInfoAttributes |
Dies wird ab .NET 6 nicht verwendet. |
CopyRazorGenerateFilesToPublishDirectory |
Kopiert RazorGenerate -Elemente (.cshtml -Dateien) in das Veröffentlichungsverzeichnis, wenn true festgelegt ist. In der Regel sind Razor-Dateien nicht für eine veröffentlichte App erforderlich, wenn sie an der Kompilierung zum Zeitpunkt der Erstellung oder Veröffentlichung beteiligt sind. Wird standardmäßig auf false festgelegt. |
PreserveCompilationReferences |
Kopiert Referenzassembly-Elemente in das Veröffentlichungsverzeichnis, wenn true festgelegt ist. In der Regel sind Referenzassemblys nicht für eine veröffentlichte App erforderlich, wenn die Razor-Kompilierung zum Zeitpunkt der Erstellung oder Veröffentlichung stattfindet. Legen Sie den Wert true fest, wenn Ihre veröffentlichte App eine Laufzeitkompilierung erfordert. Legen Sie z. B. den Wert auf true fest, wenn die App zur Laufzeit .cshtml -Dateien ändert oder eingebettete Ansichten verwendet. Wird standardmäßig auf false festgelegt. |
IncludeRazorContentInPack |
Alle Razor-Inhaltselemente ( .cshtml L-Dateien) werden für die Aufnahme in das generierte NuGet-Paket markiert, wenn true festgelegt ist. Wird standardmäßig auf false festgelegt. |
EmbedRazorGenerateSources |
Wenn true , fügt RazorGenerate (.cshtml ) Elemente als eingebettete Dateien zur generierten Razor-Assembly hinzu. Wird standardmäßig auf false festgelegt. |
GenerateMvcApplicationPartsAssemblyAttributes |
Dies wird ab .NET 6 nicht verwendet. |
DefaultWebContentItemExcludes |
Ein Globmuster für Item-Elemente, die in Projekten, die auf das Web oder das Razor SDK ausgerichtet sind, aus der Content -Elementgruppe ausgeschlossen werden sollen. |
ExcludeConfigFilesFromBuildOutput |
Bei true werden .config- und .json -Dateien nicht in das Buildausgabeverzeichnis kopiert. |
AddRazorSupportForMvc |
Bei true konfiguriert das Razor SDK die Unterstützung für die MVC-Konfiguration, die beim Erstellen von Anwendungen mit MVC Views oder Razor Pages erforderlich ist. Diese Eigenschaft wird implizit für Projekte mit .NET Core 3.0 oder höher festgelegt, die auf das Web-SDK ausgerichtet sind. |
RazorLangVersion |
Die Version der zu verwendenden Razor-Sprache. |
EmitCompilerGeneratedFiles |
Wenn true festgelegt ist, werden die generierten Quelldateien auf den Datenträger geschrieben. Das Festlegen von true ist beim Debuggen des Compilers nützlich. Der Standardwert ist false . |
Weitere Informationen zu Eigenschaften finden Sie unter MSBuild-Eigenschaften.
Kompilierung von Razor-Ansichten zur Laufzeit
Standardmäßig veröffentlicht das Razor SDK keine Verweisassemblys, die für das Durchführen der Laufzeitkompilierung erforderlich sind. Dadurch kommt es zu Kompilierungsfehlern, wenn das Anwendungsmodell von der Laufzeitkompilierung abhängt – wenn beispielsweise die App eingebettete Ansichten verwendet oder Ansichten nach dem Veröffentlichen der App verändert werden. Legen Sie
CopyRefAssembliesToPublishDirectory
auftrue
fest, um mit dem Veröffentlichen von Verweisassemblys fortzufahren. Sowohl die Codegenerierung als auch die Codekompilierung werden durch einen einzelnen Aufruf des Compilers unterstützt. Es wird eine einzelne Assembly erzeigt, die die App-Typen und die generierten Ansichten enthält.Stellen Sie bei einer Web-App sicher, dass Ihre App auf das
Microsoft.NET.Sdk.Web
SDK ausgerichtet ist.
Razor-Sprachversion
Bei Abzielen auf das Microsoft.NET.Sdk.Web
SDK wird die Razor-Sprachversion von der Zielframeworkversion der App abgeleitet. Für Projekte, die auf das Microsoft.NET.Sdk.Razor
SDK abzielen, oder in dem seltenen Fall, dass die App eine andere Razor-Sprachversion als der abgeleitete Wert erfordert, kann eine Version durch Festlegen der <RazorLangVersion>
-Eigenschaft in der Projektdatei der App konfiguriert werden:
<PropertyGroup>
<RazorLangVersion>{VERSION}</RazorLangVersion>
</PropertyGroup>
Die Sprachversion von Razor ist eng mit der Version der Laufzeitumgebung integriert, für die sie erstellt wurde. Die Ausrichtung auf eine Sprachversion, die nicht für die Laufzeit konzipiert ist, wird nicht unterstützt und führt wahrscheinlich zu Buildfehlern.
Zusätzliche Ressourcen
Das .NET Core 2.1 SDK oder höher enthält das Microsoft.NET.Sdk.Razor
MSBuild SDK (Razor SDK). Das Razor SDK...
- ist zum Erstellen, Packen und Veröffentlichen von Paketen erforderlich, die Razor-Dateien für ASP.NET Core MVC-basierte oder Blazor-Projekte enthalten.
- Enthält vordefinierte Ziele, Eigenschaften und Elemente, die das Anpassen der Razor-Dateien (
.cshtml
oder.razor
) ermöglichen.
Das Razor SDK enthält Content
-Elemente mit Include
-Attributen, die auf die **\*.cshtml
- und **\*.razor
-Globmuster festgelegt sind. Übereinstimmende Dateien werden veröffentlicht.
Voraussetzungen
Verwenden des Razor SDK
Die meisten Web-Apps müssen nicht explizit auf das Razor SDK verweisen.
Damit Sie das Razor SDK zur Erstellung von Klassenbibliotheken mit Razor Views oder Razor Pages verwenden können, wird empfohlen, mit der Projektvorlage für die Razor-Klassenbibliothek (Razor Class Library, RCL) zu beginnen. Eine RCL, die zum Erstellen von Blazor-Dateien (.razor
) verwendet wird, erfordert mindestens einen Verweis auf das Paket Microsoft.AspNetCore.Components. Eine RCL, die zum Erstellen von Razor-Ansichten oder -Seiten (.cshtml
-Dateien) verwendet wird, erfordert mindestens die Ausrichtung auf netcoreapp3.0
oder höher und ein FrameworkReference
-Element für das Microsoft.AspNetCore.App-Metapaket in der Projektdatei.
Eigenschaften
Die folgenden Eigenschaften steuern das Verhalten des Razor SDK im Rahmen eines Projektbuilds:
RazorCompileOnBuild
: Kompiliert die Razor-Assembly im Rahmen der Projekterstellung und gibt sie aus, wenntrue
festgelegt wird. Wird standardmäßig auftrue
festgelegt.RazorCompileOnPublish
: Kompiliert die Razor-Assembly im Rahmen der Projektveröffentlichung und gibt sie aus, wenntrue
festgelegt wird. Wird standardmäßig auftrue
festgelegt.
Die Eigenschaften und Elemente in der folgenden Tabelle werden zum Konfigurieren der Eingabe und Ausgabe an das Razor SDK verwendet.
Warnung
Ab ASP.NET Core 3.0 werden MVC Views oder Razor Pages standardmäßig nicht mehr verarbeitet, wenn die MSBuild-Eigenschaften RazorCompileOnBuild
oder RazorCompileOnPublish
in der Projektdatei deaktiviert sind. Anwendungen müssen einen expliziten Verweis auf das Paket Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation hinzufügen, wenn die App auf die Laufzeitkompilierung angewiesen ist, um .cshtml
zu verarbeiten.
Elemente | BESCHREIBUNG |
---|---|
RazorGenerate |
Item-Elemente (.cshtml -Dateien), die Eingaben für die Codegenerierung sind. |
RazorComponent |
Item-Elemente (.razor -Dateien), die Eingaben für die Codegenerierung für Razor-Komponenten sind. |
RazorCompile |
Item-Elemente (.cs -Dateien), die Eingaben für Razor-Kompilierungsziele sind. Verwenden Sie dieses ItemGroup -Element, um zusätzliche Dateien für die Kompilierung in die Razor-Assembly anzugeben. |
RazorTargetAssemblyAttribute |
Item-Elemente, die für das Programmieren von Generate-Attributen für die Razor-Assembly verwendet werden. Beispiel: RazorAssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute" _Parameter1="BuildSource" _Parameter2="https://learn.microsoft.com/"> |
RazorEmbeddedResource |
Item-Elemente, die als eingebettete Ressourcen in die generierte Razor-Assembly eingefügt werden. |
Eigenschaft | Beschreibung |
---|---|
RazorTargetName |
Dateiname (ohne Erweiterung) der Assembly, die von Razor erstellt wurde. |
RazorOutputPath |
Das Razor-Ausgabeverzeichnis. |
RazorCompileToolset |
Wird verwendet, um das Toolset für die Erstellung der Razor-Assembly zu bestimmen. Gültige Werte sind Implicit , RazorSDK und PrecompilationTool . |
EnableDefaultContentItems | Der Standardwert ist true . Bei true werden web.config-, .json - und .cshtml -Dateien als Inhalt in das Projekt einbezogen. Bei einem Verweis über Microsoft.NET.Sdk.Web sind auch Dateien unter wwwroot und Konfigurationsdateien enthalten. |
EnableDefaultRazorGenerateItems |
Enthält .cshtml -Dateien aus Content -Elementen in RazorGenerate -Elementen, wenn true festgelegt ist. |
GenerateRazorTargetAssemblyInfo |
Generiert eine .cs -Datei, die von RazorAssemblyAttribute angegebene Attribute enthält, und schließt die Datei in der Kompilierungsausgabe ein, wenn true festgelegt ist. |
EnableDefaultRazorTargetAssemblyInfoAttributes |
Fügt einen Standardsatz von Assembly-Attributen zu RazorAssemblyAttribute hinzu, wenn true festgelegt ist. |
CopyRazorGenerateFilesToPublishDirectory |
Kopiert RazorGenerate -Elemente (.cshtml -Dateien) in das Veröffentlichungsverzeichnis, wenn true festgelegt ist. In der Regel sind Razor-Dateien nicht für eine veröffentlichte App erforderlich, wenn sie an der Kompilierung zum Zeitpunkt der Erstellung oder Veröffentlichung beteiligt sind. Wird standardmäßig auf false festgelegt. |
PreserveCompilationReferences |
Kopiert Referenzassembly-Elemente in das Veröffentlichungsverzeichnis, wenn true festgelegt ist. In der Regel sind Referenzassemblys nicht für eine veröffentlichte App erforderlich, wenn die Razor-Kompilierung zum Zeitpunkt der Erstellung oder Veröffentlichung stattfindet. Legen Sie den Wert true fest, wenn Ihre veröffentlichte App eine Laufzeitkompilierung erfordert. Legen Sie z. B. den Wert auf true fest, wenn die App zur Laufzeit .cshtml -Dateien ändert oder eingebettete Ansichten verwendet. Wird standardmäßig auf false festgelegt. |
IncludeRazorContentInPack |
Alle Razor-Inhaltselemente ( .cshtml L-Dateien) werden für die Aufnahme in das generierte NuGet-Paket markiert, wenn true festgelegt ist. Wird standardmäßig auf false festgelegt. |
EmbedRazorGenerateSources |
Wenn true , fügt RazorGenerate (.cshtml ) Elemente als eingebettete Dateien zur generierten Razor-Assembly hinzu. Wird standardmäßig auf false festgelegt. |
UseRazorBuildServer |
Verwendet einen dauerhaften Buildserverprozess, um die Auslastung durch die Codegenerierung zu verlagern, wenn true festgelegt ist. Wird standardmäßig auf den Wert UseSharedCompilation festgelegt. |
GenerateMvcApplicationPartsAssemblyAttributes |
Das SDK generiert zusätzliche Attribute, die von MVC zur Laufzeit zur Durchführung der Anwendungsteilerkennung verwendet werden, wenn true festgelegt ist. |
DefaultWebContentItemExcludes |
Ein Globmuster für Item-Elemente, die in Projekten, die auf das Web oder das Razor SDK ausgerichtet sind, aus der Content -Elementgruppe ausgeschlossen werden sollen. |
ExcludeConfigFilesFromBuildOutput |
Bei true werden .config- und .json -Dateien nicht in das Buildausgabeverzeichnis kopiert. |
AddRazorSupportForMvc |
Bei true konfiguriert das Razor SDK die Unterstützung für die MVC-Konfiguration, die beim Erstellen von Anwendungen mit MVC Views oder Razor Pages erforderlich ist. Diese Eigenschaft wird implizit für Projekte mit .NET Core 3.0 oder höher festgelegt, die auf das Web-SDK ausgerichtet sind. |
RazorLangVersion |
Die Version der zu verwendenden Razor-Sprache. |
Weitere Informationen zu Eigenschaften finden Sie unter MSBuild-Eigenschaften.
Ziele
Das Razor SDK definiert zwei Hauptziele:
RazorGenerate
: Der Code generiert.cs
-Dateien ausRazorGenerate
-Item-Elementen. Verwenden Sie die EigenschaftRazorGenerateDependsOn
, um zusätzliche Ziele anzugeben, die vor oder nach diesem Ziel ausgeführt werden können.RazorCompile
: Kompiliert generierte.cs
in eine Razor-Assembly. Verwenden SieRazorCompileDependsOn
, um zusätzliche Ziele anzugeben, die vor oder nach diesem Ziel ausgeführt werden können.RazorComponentGenerate
: Der Code generiert.cs
-Dateien fürRazorComponent
-Item-Elemente. Verwenden Sie die EigenschaftRazorComponentGenerateDependsOn
, um zusätzliche Ziele anzugeben, die vor oder nach diesem Ziel ausgeführt werden können.
Kompilierung von Razor-Ansichten zur Laufzeit
Standardmäßig veröffentlicht das Razor SDK keine Verweisassemblys, die für das Durchführen der Laufzeitkompilierung erforderlich sind. Dadurch kommt es zu Kompilierungsfehlern, wenn das Anwendungsmodell von der Laufzeitkompilierung abhängt – wenn beispielsweise die App eingebettete Ansichten verwendet oder Ansichten nach dem Veröffentlichen der App verändert werden. Legen Sie
CopyRefAssembliesToPublishDirectory
auftrue
fest, um mit dem Veröffentlichen von Verweisassemblys fortzufahren.Stellen Sie bei einer Web-App sicher, dass Ihre App auf das
Microsoft.NET.Sdk.Web
SDK ausgerichtet ist.
Razor-Sprachversion
Bei Abzielen auf das Microsoft.NET.Sdk.Web
SDK wird die Razor-Sprachversion von der Zielframeworkversion der App abgeleitet. Für Projekte, die auf das Microsoft.NET.Sdk.Razor
SDK abzielen, oder in dem seltenen Fall, dass die App eine andere Razor-Sprachversion als der abgeleitete Wert erfordert, kann eine Version durch Festlegen der <RazorLangVersion>
-Eigenschaft in der Projektdatei der App konfiguriert werden:
<PropertyGroup>
<RazorLangVersion>{VERSION}</RazorLangVersion>
</PropertyGroup>
Die Sprachversion von Razor ist eng mit der Version der Laufzeitumgebung integriert, für die sie erstellt wurde. Die Ausrichtung auf eine Sprachversion, die nicht für die Laufzeit konzipiert ist, wird nicht unterstützt und führt wahrscheinlich zu Buildfehlern.
Zusätzliche Ressourcen
- Standardisiert die Vorgänge zum Erstellen, Packen und Veröffentlichen von Projekten, die Razor-Dateien für ASP.NET Core MVC-basierte Projekte enthalten.
- Enthält vordefinierte Ziele, Eigenschaften und Elemente, die das Anpassen der Razor-Dateien ermöglichen.
Das Razor SDK enthält ein Content
-Element mit einem Include
-Attribut, das auf das **\*.cshtml
-Globmuster festgelegt ist. Übereinstimmende Dateien werden veröffentlicht.
Voraussetzungen
Verwenden des Razor SDK
Die meisten Web-Apps müssen nicht explizit auf das Razor SDK verweisen.
So verwenden Sie das Razor SDK zum Erstellen von Klassenbibliotheken, die Razor Views oder Razor Pages enthalten:
Verwenden Sie
Microsoft.NET.Sdk.Razor
anstelle vonMicrosoft.NET.Sdk
:<Project SDK="Microsoft.NET.Sdk.Razor"> <!-- omitted for brevity --> </Project>
In der Regel wird ein Paketverweis auf
Microsoft.AspNetCore.Mvc
benötigt, um zusätzliche Abhängigkeiten zum Erstellen und Kompilieren von Razor Pages und Razor Views zu empfangen. Ihr Projekt sollte mindestens Paketverweise zu Folgendem hinzufügen:Microsoft.AspNetCore.Razor.Design
Microsoft.AspNetCore.Mvc.Razor.Extensions
Microsoft.AspNetCore.Mvc.Razor
Das
Microsoft.AspNetCore.Razor.Design
-Paket enthält die Aufgaben und Ziele der Razor-Kompilierung für das Projekt.Diese Pakete sind in
Microsoft.AspNetCore.Mvc
enthalten. Das folgende Markup zeigt eine Projektdatei, die das Razor SDK verwendet, um Razor-Dateien für eine Razor Pages-App in ASP.NET Core zu erstellen:<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> <TargetFramework>netcoreapp2.1</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.3" /> </ItemGroup> </Project>
Warnung
Die Pakete Microsoft.AspNetCore.Razor.Design
und Microsoft.AspNetCore.Mvc.Razor.Extensions
sind im Metapaket Microsoft.AspNetCore.App enthalten. Der versionslose Paketverweis Microsoft.AspNetCore.App
bietet jedoch ein Metapaket für die App, das nicht die neueste Version von Microsoft.AspNetCore.Razor.Design
enthält. Projekte müssen auf eine konsistente Version von Microsoft.AspNetCore.Razor.Design
(oder Microsoft.AspNetCore.Mvc
) verweisen, sodass die neuesten Buildzeitfehlerbehebungen für Razor enthalten sind. Weitere Informationen finden Sie in diesem GitHub-Issue.
Eigenschaften
Die folgenden Eigenschaften steuern das Verhalten des Razor SDK im Rahmen eines Projektbuilds:
RazorCompileOnBuild
: Kompiliert die Razor-Assembly im Rahmen der Projekterstellung und gibt sie aus, wenntrue
festgelegt wird. Wird standardmäßig auftrue
festgelegt.RazorCompileOnPublish
: Kompiliert die Razor-Assembly im Rahmen der Projektveröffentlichung und gibt sie aus, wenntrue
festgelegt wird. Wird standardmäßig auftrue
festgelegt.
Die Eigenschaften und Elemente in der folgenden Tabelle werden zum Konfigurieren der Eingabe und Ausgabe an das Razor SDK verwendet.
Elemente | BESCHREIBUNG |
---|---|
RazorGenerate |
Item-Elemente (.cshtml -Dateien), die Eingaben für die Codegenerierung sind. |
RazorComponent |
Item-Elemente (.razor -Dateien), die Eingaben für die Codegenerierung für Razor-Komponenten sind. |
RazorCompile |
Item-Elemente (.cs -Dateien), die Eingaben für Razor-Kompilierungsziele sind. Verwenden Sie dieses ItemGroup -Element, um zusätzliche Dateien für die Kompilierung in die Razor-Assembly anzugeben. |
RazorTargetAssemblyAttribute |
Item-Elemente, die für das Programmieren von Generate-Attributen für die Razor-Assembly verwendet werden. Beispiel: RazorAssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute" _Parameter1="BuildSource" _Parameter2="https://learn.microsoft.com/"> |
RazorEmbeddedResource |
Item-Elemente, die als eingebettete Ressourcen in die generierte Razor-Assembly eingefügt werden. |
Eigenschaft | Beschreibung |
---|---|
RazorTargetName |
Dateiname (ohne Erweiterung) der Assembly, die von Razor erstellt wurde. |
RazorOutputPath |
Das Razor-Ausgabeverzeichnis. |
RazorCompileToolset |
Wird verwendet, um das Toolset für die Erstellung der Razor-Assembly zu bestimmen. Gültige Werte sind Implicit , RazorSDK und PrecompilationTool . |
EnableDefaultContentItems | Der Standardwert ist true . Bei true werden web.config-, .json - und .cshtml -Dateien als Inhalt in das Projekt einbezogen. Bei einem Verweis über Microsoft.NET.Sdk.Web sind auch Dateien unter wwwroot und Konfigurationsdateien enthalten. |
EnableDefaultRazorGenerateItems |
Enthält .cshtml -Dateien aus Content -Elementen in RazorGenerate -Elementen, wenn true festgelegt ist. |
GenerateRazorTargetAssemblyInfo |
Generiert eine .cs -Datei, die von RazorAssemblyAttribute angegebene Attribute enthält, und schließt die Datei in der Kompilierungsausgabe ein, wenn true festgelegt ist. |
EnableDefaultRazorTargetAssemblyInfoAttributes |
Fügt einen Standardsatz von Assembly-Attributen zu RazorAssemblyAttribute hinzu, wenn true festgelegt ist. |
CopyRazorGenerateFilesToPublishDirectory |
Kopiert RazorGenerate -Elemente (.cshtml -Dateien) in das Veröffentlichungsverzeichnis, wenn true festgelegt ist. In der Regel sind Razor-Dateien nicht für eine veröffentlichte App erforderlich, wenn sie an der Kompilierung zum Zeitpunkt der Erstellung oder Veröffentlichung beteiligt sind. Wird standardmäßig auf false festgelegt. |
CopyRefAssembliesToPublishDirectory |
Kopiert Referenzassembly-Elemente in das Veröffentlichungsverzeichnis, wenn true festgelegt ist. In der Regel sind Referenzassemblys nicht für eine veröffentlichte App erforderlich, wenn die Razor-Kompilierung zum Zeitpunkt der Erstellung oder Veröffentlichung stattfindet. Legen Sie den Wert true fest, wenn Ihre veröffentlichte App eine Laufzeitkompilierung erfordert. Legen Sie z. B. den Wert auf true fest, wenn die App zur Laufzeit .cshtml -Dateien ändert oder eingebettete Ansichten verwendet. Wird standardmäßig auf false festgelegt. |
IncludeRazorContentInPack |
Alle Razor-Inhaltselemente ( .cshtml L-Dateien) werden für die Aufnahme in das generierte NuGet-Paket markiert, wenn true festgelegt ist. Wird standardmäßig auf false festgelegt. |
EmbedRazorGenerateSources |
Wenn true , fügt RazorGenerate (.cshtml ) Elemente als eingebettete Dateien zur generierten Razor-Assembly hinzu. Wird standardmäßig auf false festgelegt. |
UseRazorBuildServer |
Verwendet einen dauerhaften Buildserverprozess, um die Auslastung durch die Codegenerierung zu verlagern, wenn true festgelegt ist. Wird standardmäßig auf den Wert UseSharedCompilation festgelegt. |
GenerateMvcApplicationPartsAssemblyAttributes |
Das SDK generiert zusätzliche Attribute, die von MVC zur Laufzeit zur Durchführung der Anwendungsteilerkennung verwendet werden, wenn true festgelegt ist. |
DefaultWebContentItemExcludes |
Ein Globmuster für Item-Elemente, die in Projekten, die auf das Web oder das Razor SDK ausgerichtet sind, aus der Content -Elementgruppe ausgeschlossen werden sollen. |
ExcludeConfigFilesFromBuildOutput |
Bei true werden .config- und .json -Dateien nicht in das Buildausgabeverzeichnis kopiert. |
AddRazorSupportForMvc |
Bei true konfiguriert das Razor SDK die Unterstützung für die MVC-Konfiguration, die beim Erstellen von Anwendungen mit MVC Views oder Razor Pages erforderlich ist. Diese Eigenschaft wird implizit für Projekte mit .NET Core 3.0 oder höher festgelegt, die auf das Web-SDK ausgerichtet sind. |
RazorLangVersion |
Die Version der zu verwendenden Razor-Sprache. |
Weitere Informationen zu Eigenschaften finden Sie unter MSBuild-Eigenschaften.
Ziele
Das Razor SDK definiert zwei Hauptziele:
RazorGenerate
: Der Code generiert.cs
-Dateien ausRazorGenerate
-Item-Elementen. Verwenden Sie die EigenschaftRazorGenerateDependsOn
, um zusätzliche Ziele anzugeben, die vor oder nach diesem Ziel ausgeführt werden können.RazorCompile
: Kompiliert generierte.cs
in eine Razor-Assembly. Verwenden SieRazorCompileDependsOn
, um zusätzliche Ziele anzugeben, die vor oder nach diesem Ziel ausgeführt werden können.RazorComponentGenerate
: Der Code generiert.cs
-Dateien fürRazorComponent
-Item-Elemente. Verwenden Sie die EigenschaftRazorComponentGenerateDependsOn
, um zusätzliche Ziele anzugeben, die vor oder nach diesem Ziel ausgeführt werden können.
Kompilierung von Razor-Ansichten zur Laufzeit
Standardmäßig veröffentlicht das Razor SDK keine Verweisassemblys, die für das Durchführen der Laufzeitkompilierung erforderlich sind. Dadurch kommt es zu Kompilierungsfehlern, wenn das Anwendungsmodell von der Laufzeitkompilierung abhängt – wenn beispielsweise die App eingebettete Ansichten verwendet oder Ansichten nach dem Veröffentlichen der App verändert werden. Legen Sie
CopyRefAssembliesToPublishDirectory
auftrue
fest, um mit dem Veröffentlichen von Verweisassemblys fortzufahren.Stellen Sie bei einer Web-App sicher, dass Ihre App auf das
Microsoft.NET.Sdk.Web
SDK ausgerichtet ist.
Razor-Sprachversion
Bei Abzielen auf das Microsoft.NET.Sdk.Web
SDK wird die Razor-Sprachversion von der Zielframeworkversion der App abgeleitet. Für Projekte, die auf das Microsoft.NET.Sdk.Razor
SDK abzielen, oder in dem seltenen Fall, dass die App eine andere Razor-Sprachversion als der abgeleitete Wert erfordert, kann eine Version durch Festlegen der <RazorLangVersion>
-Eigenschaft in der Projektdatei der App konfiguriert werden:
<PropertyGroup>
<RazorLangVersion>{VERSION}</RazorLangVersion>
</PropertyGroup>
Die Sprachversion von Razor ist eng mit der Version der Laufzeitumgebung integriert, für die sie erstellt wurde. Die Ausrichtung auf eine Sprachversion, die nicht für die Laufzeit konzipiert ist, wird nicht unterstützt und führt wahrscheinlich zu Buildfehlern.