C# .NETCore3.0:Razor视图不';t在更改时自动重新编译
根据,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完整版本: 这个问题仍然有很多意见。引用了一些答案来补充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完整版本: 这
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
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"
}
}
}
}