.NET Core 3.0:Razor 视图不会在更改时自动重新编译
.NET Core 3.0: Razor views don't automatically recompile on change
根据 the documentation,默认情况下,Razor 视图应根据 ASP.NET Core 3.0 的本地环境更改重新编译。
但是,我的项目不会在本地执行此操作。如果我在本地调试时更改视图并刷新,则不会反映更改。只好停止解决,重新运行,再看变化
我在 Visual Studio 2019 的默认 ASP.NET 核心 Web 应用程序模板上使用 ASP.NET 核心 3.0.0 预览版 2 使用 Razor 页面执行此操作。知道我是否需要更改设置以启用此功能吗?
2019 年 11 月更新 3.0 完整版本:
这个问题还是有很多人看的。引用几个答案补充
services.AddControllersWithViews().AddRazorRuntimeCompilation();
在添加 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
NuGet 程序包后 Startup.cs
中的 ConfigureServices()
函数。就我而言,我只使用 Razor Pages,所以我没有调用 AddControllersWithViews()
。相反,这对我有用:
services.AddRazorPages().AddRazorRuntimeCompilation();
好的,看起来还不支持:(
Runtime compilation removed As a consequence of cleaning up the
ASP.NET Core shared framework to not depend on Roslyn, support for
runtime compilation of pages and views has also been removed in this
preview release. Instead compilation of pages and views is performed
at build time. In a future preview update we will provide a NuGet
packages for optionally enabling runtime compilation support in an
app.
您可以在此处阅读有关该问题的更多信息https://github.com/aspnet/Announcements/issues/343
需要运行时编译或重新编译 Razor 文件的应用程序应该:
- 添加对
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
包的引用。它将作为 3.0.0-preview3 版本的一部分提供。
- 更新应用程序的
ConfigureServices
以包含对 AddMvcRazorRuntimeCompilation
的调用:
要在 ASP.NET Core
3
中恢复运行时视图编译
- 引用
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
- 致电
services.AddMvc().AddRazorRuntimeCompilation()
- 如果
Microsoft.CodeAnalysis.Common
包 上存在版本不匹配,请删除 Microsoft.VisualStudio.Web.CodeGeneration.Design
对于ASP.NET Core 3 发布版本:
services.AddControllersWithViews().AddRazorRuntimeCompilation();
https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0
也可以有条件地只为本地开发启用,引用自link:
Runtime compilation can be enabled such that it's only available for
local development. Conditionally enabling in this manner ensures that
the published output:
Uses compiled views.
Is smaller in size.
Doesn't enable file watchers
in production.
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
}
使用 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
包启用运行时编译。要启用运行时编译,应用必须:
安装 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
NuGet
包.
更新项目的 Startup.ConfigureServices
方法以包含一个
致电 AddRazorRuntimeCompilation
:
services
.AddControllersWithViews()
.AddRazorRuntimeCompilation();
https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0
要在 ASP.NET Core 3.1 中恢复运行时 Razor Views 编译:
- 安装
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
NuGet 包。
- 更新项目的
Startup.ConfigureServices
方法以包含对 AddRazorRuntimeCompilation
的调用。
services.AddRazorPages().AddRazorRuntimeCompilation()
;
只是一个补充说明——您可能只想有条件地启用此运行时编译,以便发布的输出:
- 使用编译视图。
- 尺寸较小。
- 在生产环境中不启用文件观察器。
第 1 步:从解决方案的 NuGet 包管理器安装以下包。
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
第 2 步:在 Startup.cs 文件
的 ConfigureServices 中添加以下代码
services.AddControllersWithViews().AddRazorRuntimeCompilation();
保存页面,然后刷新客户端浏览器。
如果您使用的是 Razor,则添加 services.AddRazorPages().AddRazorRuntimeCompilation();
的代码
在 .NET Core 3.1 中,您需要禁用 views.dll
文件的生成。
将以下代码添加到您的 .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>
从解决方案的 NuGet 包管理器安装以下包。
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
将以下代码添加到 Startup.cs
文件的 ConfigureServices
方法中:
services.AddMvc().AddRazorRuntimeCompilation();
或
services.AddControllersWithViews().AddRazorRuntimeCompilation();
或
services.AddRazorPages().AddRazorRuntimeCompilation();
在此之后,再次发布并运行。它会起作用。
仅针对本地开发配置运行时编译的最简单方法是更新 launchSettings.json
中的启动配置文件。此方法无需更改代码即可在本地配置 运行 项目(不会影响您的生产)。
- Install the Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet package.
- Modify the launch profile environmentVariables section in launchSettings.json:
- Verify
ASPNETCORE_ENVIRONMENT
is set to "Development".
- Set
ASPNETCORE_HOSTINGSTARTUPASSEMBLIES
to "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"
}
}
}
}
根据 the documentation,默认情况下,Razor 视图应根据 ASP.NET Core 3.0 的本地环境更改重新编译。
但是,我的项目不会在本地执行此操作。如果我在本地调试时更改视图并刷新,则不会反映更改。只好停止解决,重新运行,再看变化
我在 Visual Studio 2019 的默认 ASP.NET 核心 Web 应用程序模板上使用 ASP.NET 核心 3.0.0 预览版 2 使用 Razor 页面执行此操作。知道我是否需要更改设置以启用此功能吗?
2019 年 11 月更新 3.0 完整版本:
这个问题还是有很多人看的。引用几个答案补充
services.AddControllersWithViews().AddRazorRuntimeCompilation();
在添加 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
NuGet 程序包后 Startup.cs
中的 ConfigureServices()
函数。就我而言,我只使用 Razor Pages,所以我没有调用 AddControllersWithViews()
。相反,这对我有用:
services.AddRazorPages().AddRazorRuntimeCompilation();
好的,看起来还不支持:(
Runtime compilation removed As a consequence of cleaning up the ASP.NET Core shared framework to not depend on Roslyn, support for runtime compilation of pages and views has also been removed in this preview release. Instead compilation of pages and views is performed at build time. In a future preview update we will provide a NuGet packages for optionally enabling runtime compilation support in an app.
您可以在此处阅读有关该问题的更多信息https://github.com/aspnet/Announcements/issues/343
需要运行时编译或重新编译 Razor 文件的应用程序应该:
- 添加对
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
包的引用。它将作为 3.0.0-preview3 版本的一部分提供。 - 更新应用程序的
ConfigureServices
以包含对AddMvcRazorRuntimeCompilation
的调用:
要在 ASP.NET Core
3
- 引用
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
- 致电
services.AddMvc().AddRazorRuntimeCompilation()
- 如果
Microsoft.CodeAnalysis.Common
包 上存在版本不匹配,请删除
Microsoft.VisualStudio.Web.CodeGeneration.Design
对于ASP.NET Core 3 发布版本:
services.AddControllersWithViews().AddRazorRuntimeCompilation();
https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0
也可以有条件地只为本地开发启用,引用自link:
Runtime compilation can be enabled such that it's only available for local development. Conditionally enabling in this manner ensures that the published output:
Uses compiled views.
Is smaller in size.
Doesn't enable file watchers in production.
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
}
使用 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
包启用运行时编译。要启用运行时编译,应用必须:
安装
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
NuGet 包.更新项目的
Startup.ConfigureServices
方法以包含一个 致电AddRazorRuntimeCompilation
:
services
.AddControllersWithViews()
.AddRazorRuntimeCompilation();
https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0
要在 ASP.NET Core 3.1 中恢复运行时 Razor Views 编译:
- 安装
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
NuGet 包。 - 更新项目的
Startup.ConfigureServices
方法以包含对AddRazorRuntimeCompilation
的调用。 services.AddRazorPages().AddRazorRuntimeCompilation()
;
只是一个补充说明——您可能只想有条件地启用此运行时编译,以便发布的输出:
- 使用编译视图。
- 尺寸较小。
- 在生产环境中不启用文件观察器。
第 1 步:从解决方案的 NuGet 包管理器安装以下包。
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
第 2 步:在 Startup.cs 文件
的 ConfigureServices 中添加以下代码services.AddControllersWithViews().AddRazorRuntimeCompilation();
保存页面,然后刷新客户端浏览器。
如果您使用的是 Razor,则添加 services.AddRazorPages().AddRazorRuntimeCompilation();
的代码在 .NET Core 3.1 中,您需要禁用 views.dll
文件的生成。
将以下代码添加到您的
.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>
从解决方案的 NuGet 包管理器安装以下包。
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
将以下代码添加到
Startup.cs
文件的ConfigureServices
方法中:services.AddMvc().AddRazorRuntimeCompilation();
或
services.AddControllersWithViews().AddRazorRuntimeCompilation();
或
services.AddRazorPages().AddRazorRuntimeCompilation();
在此之后,再次发布并运行。它会起作用。
仅针对本地开发配置运行时编译的最简单方法是更新 launchSettings.json
中的启动配置文件。此方法无需更改代码即可在本地配置 运行 项目(不会影响您的生产)。
- Install the Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet package.
- Modify the launch profile environmentVariables section in launchSettings.json:
- Verify
ASPNETCORE_ENVIRONMENT
is set to "Development".- Set
ASPNETCORE_HOSTINGSTARTUPASSEMBLIES
to "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"
}
}
}
}