.NET Core 3.0-预览版2-Razor视图在更改时不会自动重新编译

tar*_*713 32 c# asp.net-core razor-pages asp.net-core-3.0

根据https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0,默认情况下,剃刀视图应在asp.net core 3.0的本地环境更改时重新编译。

但是,我的项目不在本地执行。如果更改视图并在本地调试时刷新,则更改不会反映出来。我必须停止解决方案,重新运行,然后查看更改。

我在Visual Studio 2019上的默认ASP.NET Core Web应用程序模板上使用asp.net core 3.0.0预览版2使用剃刀页面执行此操作。我是否需要更改设置以启用此功能?

更新于2019年11月进行3.0版全面发布: 这个问题仍然有很多观点。引用了一些答案来补充

services.AddControllersWithViews().AddRazorRuntimeCompilation(); 
Run Code Online (Sandbox Code Playgroud)

添加Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet包后,将其添加到Startup.cs中的ConfigureServices()函数。就我而言,我仅使用Razor Pages,因此不调用AddControllersWithViews,因此这对我有用:

services.AddRazorPages().AddRazorRuntimeCompilation();
Run Code Online (Sandbox Code Playgroud)

Luk*_*och 22

好的,看来它尚不支持:(

删除了运行时编译由于清理了ASP.NET Core共享框架而不依赖于Roslyn,因此在此预览版本中也删除了对页面和视图的运行时编译的支持。而是在构建时执行页面和视图的编译。在将来的预览更新中,我们将提供NuGet软件包,用于有选择地在应用程序中启用运行时编译支持。

您可以在这里阅读有关此问题的更多信息https://github.com/aspnet/Announcements/issues/343

需要运行时编译或重新编译Razor文件的应用程序应:

  • 添加对Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation程序包的引用。它将作为3.0.0-preview3版本的一部分提供。
  • 更新应用程序ConfigureServices以包括对的调用AddMvcRazorRuntimeCompilation

  • AddMvcRazorRuntimeCompilation是带有ASP.Net Core 3.0 Preview 4的AddRazorRuntimeCompilation。 (5认同)

Dmi*_*lov 16

ASP.NET Core3中重新获得运行时视图编译

  1. 参考 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
  2. 呼叫 services.AddMvc().AddRazorRuntimeCompilation()
  3. Microsoft.VisualStudio.Web.CodeGeneration.Design如果Microsoft.CodeAnalysis.Common包装上的版本不匹配,请删除

  • 其他提示:使用Nuget时,勾选/选中“预发布”框。 (2认同)
  • +1,因为删除 Microsoft.VisualStudio.Web.CodeGeneration.Design 包是其他地方没有提到的秘密武器。 (2认同)

rau*_*and 16

对于ASP.NET Core 3发行版本:

   services.AddControllersWithViews().AddRazorRuntimeCompilation();
Run Code Online (Sandbox Code Playgroud)

https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0


Nam*_*yay 16

要在 ASP.NET Core 3.1 中重新获得运行时 Razor 视图编译:

  1. 安装Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilationNuGet 包。
  2. 更新项目的Startup.ConfigureServices方法以包含对AddRazorRuntimeCompilation.
  3. services.AddRazorPages().AddRazorRuntimeCompilation();

    ASP.NET Core 3.1 中的 Razor 文件编译


小智 13

步骤 1:从 NuGet Package Manager for Solution 安装以下包。

Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation

步骤 2:在 Startup.cs 文件的 ConfigureServices 中添加以下代码

services.AddControllersWithViews().AddRazorRuntimeCompilation();

保存页面,然后刷新客户端浏览器。

如果您使用 Razor,则添加 services.AddRazorPages().AddRazorRuntimeCompilation(); 的代码。


小智 10

Runtime compilation is enabled using the Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation package. To enable runtime compilation, apps must:

  1. Install the Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet package.

  2. Update the project's Startup.ConfigureServices method to include a call to AddRazorRuntimeCompilation:

services
    .AddControllersWithViews()
    .AddRazorRuntimeCompilation();
Run Code Online (Sandbox Code Playgroud)

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0


Ali*_*uli 7

在 .NET Core 3.1 中,您需要禁用views.dll文件的生成。

  1. 将以下代码添加到您的.csproj文件中(在项目的根目录中):

    <PropertyGroup>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <UserSecretsId>...</UserSecretsId>
    
        <!-- add from this line: -->
        <CopyRazorGenerateFilesToPublishDirectory>true</CopyRazorGenerateFilesToPublishDirectory>
        <CopyRefAssembliesToPublishDirectory>false</CopyRefAssembliesToPublishDirectory>
        <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
        <RazorCompileOnBuild>false</RazorCompileOnBuild>
        <!-- to this line. -->
    
    </PropertyGroup>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 从解决方案的 NuGet 包管理器安装以下包。

    Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将以下代码添加到文件的ConfigureServices方法中Startup.cs

    services.AddMvc().AddRazorRuntimeCompilation();
    
    Run Code Online (Sandbox Code Playgroud)

    或者

    services.AddControllersWithViews().AddRazorRuntimeCompilation();
    
    Run Code Online (Sandbox Code Playgroud)

    或者

    services.AddRazorPages().AddRazorRuntimeCompilation();
    
    Run Code Online (Sandbox Code Playgroud)

在此之后,再次发布并运行它。它会起作用。

  • 对于我的 .NET 5.0,.csproj 中只需要以下标记 `&lt;RazorCompileOnBuild&gt;false&lt;/RazorCompileOnBuild&gt; &lt;RazorCompileOnPublish&gt;false&lt;/RazorCompileOnPublish&gt; &lt;CopyRefAssembliesToPublishDirectory&gt;false&lt;/CopyRefAssembliesToPublishDirectory&gt;` 还需要所有其他 2 和 3 步骤 (3认同)

tsc*_*ors 7

仅针对本地开发配置运行时编译的最简单方法是更新launchSettings.json. 此方法不需要更改代码来配置本地运行的项目(不会影响您的生产)。

请参阅官方文档

  1. 安装Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet 包。
  2. 修改launchSettings.json中的启动配置文件environmentVariables部分:
    • 验证ASPNETCORE_ENVIRONMENT设置为“开发”。
    • 设置ASPNETCORE_HOSTINGSTARTUPASSEMBLIES为“Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation”。

例子:

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:57676",
      "sslPort": 44364
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
      }
    },
    "RazorPagesApp": {
      "commandName": "Project",
      "launchBrowser": true,
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


Bry*_*ass 6

只是一个补充说明——您可能只想有条件地启用此运行时编译,以便发布的输出:

  • 使用编译视图。
  • 尺寸更小。
  • 不在生产中启用文件观察器。

有条件地启用运行时编译