.NET Core 3.0 - Preview 2 - Razor view не перекомпилируется автоматически при изменении
Согласно https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0 по умолчанию бритвенные представления должны перекомпилироваться при изменении локальных сред для asp.net core 3.0,
Тем не менее, мой проект не делает это локально. Если я меняю представление и обновляюсь при локальной отладке, это изменение не отражается. Я должен остановить решение, перезапустить, а затем увидеть изменения.
Я делаю это на стандартном шаблоне ASP.NET Core Web Application в Visual Studio 2019 с asp.net core 3.0.0 preview 2, используя бритвенные страницы. Любая идея, если мне нужно изменить настройки, чтобы включить эту функцию?
1 ответ
ОК, похоже, он еще не поддерживается:(
Удалена компиляция во время выполнения В результате очистки общей платформы ASP.NET Core, которая не зависит от Roslyn, в этом предварительном выпуске также была удалена поддержка компиляции страниц и представлений во время выполнения. Вместо этого компиляция страниц и представлений выполняется во время сборки. В будущем предварительном обновлении мы предоставим пакеты NuGet для дополнительного включения поддержки компиляции во время выполнения в приложении.
Вы можете прочитать больше о проблеме здесь https://github.com/aspnet/Announcements/issues/343
Приложения, требующие компиляции во время выполнения или повторной компиляции файлов Razor, должны:
- Добавить ссылку на
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
пакет. Он будет доступен как часть версии 3.0.0-preview3. - Обновите приложение
ConfigureServices
включить звонок вAddMvcRazorRuntimeCompilation
:
Для версии выпуска ASP.NET Core 3:
services.AddControllersWithViews().AddRazorRuntimeCompilation();
https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0
Также его можно включить условно только для локальной разработки, процитировано по ссылке:
Компиляцию среды выполнения можно включить так, чтобы она была доступна только для локальной разработки. Условное включение таким образом гарантирует, что опубликованный вывод:
Использует скомпилированные просмотры.
Меньше по размеру.
Не включает файловые наблюдатели в производственной среде.
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
}
Вернуть компиляцию представления во время выполнения ASP.NET Core
3
- Ссылка
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
- Вызов
services.AddMvc().AddRazorRuntimeCompilation()
- Удалить
Microsoft.VisualStudio.Web.CodeGeneration.Design
если есть несоответствие версии наMicrosoft.CodeAnalysis.Common
пакет
Компиляция времени выполнения включается с помощью 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
Чтобы вернуть компиляцию представлений Razor во время выполнения в ASP.NET Core 3.1:
- Установите
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
Пакет NuGet. - Обновите проект
Startup.ConfigureServices
метод для включения вызоваAddRazorRuntimeCompilation
. services.AddRazorPages().AddRazorRuntimeCompilation()
;
Шаг 1. Установите указанный ниже пакет из диспетчера пакетов NuGet для решения.
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
Шаг 2. Добавьте приведенный ниже код в ConfigureServices файла Startup.cs.
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
Добавьте приведенный ниже код в
ConfigureServices
метод вашегоStartup.cs
файл:services.AddMvc().AddRazorRuntimeCompilation();
Или
services.AddControllersWithViews().AddRazorRuntimeCompilation();
Или
services.AddRazorPages().AddRazorRuntimeCompilation();
После этого опубликуйте еще раз и запустите. Это будет работать.
Самый простой способ настроить компиляцию среды выполнения только для локальной разработки - обновить профили запуска в
launchSettings.json
. Этот метод не требует изменения кода для настройки проекта, который выполняется локально (это не повлияет на вашу продукцию).
- Установите пакет NuGet Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.
- Измените раздел "Параметры среды запуска" в файле launchSettings.json:
- Проверить
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"
}
}
}
}
Просто добавленное примечание - вы можете только условно включить эту компиляцию среды выполнения, чтобы опубликованный вывод:
- Использует скомпилированные просмотры.
- Меньше по размеру.
- Не включает файловые наблюдатели в производственной среде.