C# .NETCore3.0:Razor视图不';t在更改时自动重新编译

C# .NETCore3.0:Razor视图不';t在更改时自动重新编译,c#,asp.net-core,razor-pages,asp.net-core-3.0,C#,Asp.net Core,Razor Pages,Asp.net Core 3.0,根据,Razor视图在默认情况下应在ASP.NET Core 3.0的本地环境发生更改时重新编译 然而,我的项目在本地并没有这样做。如果在本地调试时更改视图并刷新,则不会反映更改。我必须停止解决方案,重新运行,然后查看更改 我是在Visual Studio 2019上的默认ASP.NET Core Web应用程序模板上执行此操作的,该模板带有使用Razor页面的ASP.NET Core 3.0.0 Preview 2。知道我是否需要更改设置以启用此功能吗 2019年11月更新3.0完整版本: 这

根据,Razor视图在默认情况下应在ASP.NET Core 3.0的本地环境发生更改时重新编译

然而,我的项目在本地并没有这样做。如果在本地调试时更改视图并刷新,则不会反映更改。我必须停止解决方案,重新运行,然后查看更改

我是在Visual Studio 2019上的默认ASP.NET Core Web应用程序模板上执行此操作的,该模板带有使用Razor页面的ASP.NET Core 3.0.0 Preview 2。知道我是否需要更改设置以启用此功能吗

2019年11月更新3.0完整版本: 这个问题仍然有很多意见。引用了一些答案来补充

services.AddControllersWithViews().AddRazorRuntimeCompilation();
添加
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
NuGet包后,添加到
Startup.cs
中的
ConfigureServices()
函数。在我的例子中,我只使用Razor页面,所以我不调用
AddControllersWithViews()
。相反,这对我起了作用:

services.AddRazorPages().AddRazorRuntimeCompilation();

好的,看起来它还不受支持:(

清理后,运行时编译被删除 ASP.NET核心共享框架不依赖于Roslyn,支持 在此版本中,页面和视图的运行时编译也已删除 预览发布。而不是执行页面和视图的编译 在将来的预览更新中,我们将提供一个NuGet 用于在中可选地启用运行时编译支持的包 应用程序

你可以在这里了解更多关于这个问题的信息

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

  • 添加对Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation包的引用。它将作为3.0.0-preview3版本的一部分提供

  • 更新应用程序的
    ConfigureServices
    以包含对
    AddMvcRazorRuntimeCompilation
    的调用:

将运行时视图编译返回到ASP.NET核心
3

  • 参考
    Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
  • 调用
    services.AddMvc().AddRazorRuntimeCompilation()
  • 如果
    Microsoft.CodeAnalysis.Common
    软件包上存在版本不匹配,请删除
    Microsoft.VisualStudio.Web.CodeGeneration.Design

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

       services.AddControllersWithViews().AddRazorRuntimeCompilation();
    

    也可以有条件地仅为本地开发启用,引自链接:

    可以启用运行时编译,使其仅适用于 地方发展。以这种方式有条件地使能确保 已发布的输出:

    使用编译视图。
    尺寸较小。
    不启用文件监视程序 在生产中


    运行时编译是使用Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation包启用的。要启用运行时编译,应用程序必须:

  • 安装
    Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
    NuGet 包裹

  • 更新项目的
    Startup.ConfigureServices
    方法以包括 调用
    AddRazorRuntimeCompilation


  • 要在ASP.NET Core 3.1中恢复运行时Razor视图编译,请执行以下操作:

  • 安装
    Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
    NuGet软件包
  • 更新项目的
    Startup.ConfigureServices
    方法,以包含对
    AddRazorRuntimeCompilation
    的调用
  • services.AddRazorPages().AddRazorRuntimeCompilation()

  • 只是添加了一个注释--您可能只希望有条件地启用此运行时编译,以便发布的输出:

    • 使用编译视图
    • 它的尺寸更小
    • 不在生产中启用文件监视程序

    步骤1:从NuGet package Manager为解决方案安装以下软件包

    Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation

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

    services.AddControllersWithViews().AddRazorRuntimeCompilation()

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


    如果您正在使用Razor,则需要在.NET Core 3.1中为services.AddRazorPages().AddRazorRuntimeCompilation();

    添加代码,您需要禁用生成
    视图.dll
    文件

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

    
    netcoreapp3.1
    ...
    真的
    假的
    假的
    假的
    
  • 从解决方案的NuGet软件包管理器安装以下软件包

    Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
    
  • 将以下代码添加到
    Startup.cs
    文件的
    ConfigureServices
    方法中:

    services.AddMvc().AddRazorRuntimeCompilation();
    

    services.AddControllersWithViews().AddRazorRuntimeCompilation();
    

    services.AddRazorPages().AddRazorRuntimeCompilation();
    

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

    仅为本地开发配置运行时编译的最简单方法是在
    launchSettings.json
    中更新启动配置文件。此方法无需更改代码即可配置在本地运行的项目(不会影响生产)

    见:

  • 安装Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilationNuGet软件包
  • 修改launchSettings.json中的LaunchProfile environmentVariables部分:
    • 验证
      ASPNETCORE\u环境
      是否设置为“开发”
    • ASPNETCORE\u hostingstartupsassemblies
      设置为“Microsoft.ASPNETCORE.Mvc.Razor.RuntimeCompilation”
  • E
       public Startup(IConfiguration configuration, IWebHostEnvironment env)
        {
            Configuration = configuration;
            Env = env;
        }
    
        public IWebHostEnvironment Env { get; set; }
        public IConfiguration Configuration { get; }
    
        public void ConfigureServices(IServiceCollection services)
        {
            IMvcBuilder builder = services.AddRazorPages();
    
    #if DEBUG
                if (Env.IsDevelopment())
                {
                    builder.AddRazorRuntimeCompilation();
                }
    #endif
        }
    
    services
        .AddControllersWithViews()
        .AddRazorRuntimeCompilation();
    
    {
      "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"
          }
        }
      }
    }