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

.NET 6.0 SDK

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, wenn true festgelegt wird. Wird standardmäßig auf true festgelegt.
  • RazorCompileOnPublish: Kompiliert die Razor-Assembly im Rahmen der Projektveröffentlichung und gibt sie aus, wenn true festgelegt wird. Wird standardmäßig auf true festgelegt.
  • UseRazorSourceGenerator: Wird standardmäßig auf true 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 ( .cshtmlL-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 festgelegt ist, werden RazorGenerate-Elemente (.cshtml) als eingebettete Dateien in die generierte Razor-Assembly eingefügt. 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 auf true 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

.NET Core 2.1 SDK oder höher

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, wenn true festgelegt wird. Wird standardmäßig auf true festgelegt.
  • RazorCompileOnPublish: Kompiliert die Razor-Assembly im Rahmen der Projektveröffentlichung und gibt sie aus, wenn true festgelegt wird. Wird standardmäßig auf true 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 ( .cshtmlL-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 festgelegt ist, werden RazorGenerate-Elemente (.cshtml) als eingebettete Dateien in die generierte Razor-Assembly eingefügt. 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 aus RazorGenerate-Item-Elementen. Verwenden Sie die Eigenschaft RazorGenerateDependsOn, 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 Sie RazorCompileDependsOn, um zusätzliche Ziele anzugeben, die vor oder nach diesem Ziel ausgeführt werden können.
  • RazorComponentGenerate: Der Code generiert .cs-Dateien für RazorComponent-Item-Elemente. Verwenden Sie die Eigenschaft RazorComponentGenerateDependsOn, 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 auf true 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

.NET Core 2.1 SDK oder höher

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 von Microsoft.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, wenn true festgelegt wird. Wird standardmäßig auf true festgelegt.
  • RazorCompileOnPublish: Kompiliert die Razor-Assembly im Rahmen der Projektveröffentlichung und gibt sie aus, wenn true festgelegt wird. Wird standardmäßig auf true 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 ( .cshtmlL-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 festgelegt ist, werden RazorGenerate-Elemente (.cshtml) als eingebettete Dateien in die generierte Razor-Assembly eingefügt. 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 aus RazorGenerate-Item-Elementen. Verwenden Sie die Eigenschaft RazorGenerateDependsOn, 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 Sie RazorCompileDependsOn, um zusätzliche Ziele anzugeben, die vor oder nach diesem Ziel ausgeführt werden können.
  • RazorComponentGenerate: Der Code generiert .cs-Dateien für RazorComponent-Item-Elemente. Verwenden Sie die Eigenschaft RazorComponentGenerateDependsOn, 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 auf true 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