Согласно документации , представления Razor должны по умолчанию перекомпилироваться при изменении в локальных средах для ASP.NET Core 3.0.
Однако мой проект не делает этого локально. Если я изменяю представление и обновляю при локальной отладке, изменение не отражается. Я должен остановить решение, перезапустить и увидеть изменение.
Я делаю это в шаблоне веб-приложения ASP.NET Core по умолчанию в Visual Studio 2019 с ASP.NET Core 3.0.0 Preview 2 с использованием страниц Razor. Есть идеи, нужно ли мне изменить настройки, чтобы включить эту функцию?
ОБНОВЛЕНИЕ НОЯБРЯ 2019 ДЛЯ ПОЛНОЙ РЕЛИЗЫ 3.0:
Этот вопрос до сих пор набирает много просмотров. Несколько ответов цитируются, чтобы добавить
services.AddControllersWithViews().AddRazorRuntimeCompilation();
К вашей ConfigureServices()
функции Startup.cs
после добавления Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
пакета NuGet. В моем случае я использую только Razor Pages, поэтому не звоню AddControllersWithViews()
. Вместо этого это сработало для меня:
services.AddRazorPages().AddRazorRuntimeCompilation();
источник
.AddRazorRuntimeCompilation();
мне пришлось добавить Спасибо!Ответы:
ОК, похоже, он еще не поддерживается :(
Вы можете узнать больше о проблеме здесь https://github.com/aspnet/Announcements/issues/343
Приложения, которым требуется компиляция во время выполнения или повторная компиляция файлов Razor, должны:
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
пакет. Он будет доступен как часть версии 3.0.0-preview3 .ConfigureServices
включив в него вызовAddMvcRazorRuntimeCompilation
:источник
AddMvcRazorRuntimeCompilation
этоAddRazorRuntimeCompilation
с ASP.NET 3.0 Ядро Preview 4Для версии выпуска ASP.NET Core 3:
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
3Microsoft.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
: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()
;Компиляция файлов Razor в ASP.NET Core 3.1
источник
Шаг 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 для решения.
Добавьте приведенный ниже код к
ConfigureServices
методу вашегоStartup.cs
файла:Или
Или
После этого опубликуйте еще раз и запустите. Это будет работать.
источник
Самый простой способ настроить компиляцию среды выполнения только для локальной разработки - обновить профили запуска в
launchSettings.json
. Этот метод не требует изменения кода для настройки проекта, который выполняется локально (это не повлияет на вашу продукцию).См. Официальную документацию :
Пример:
{ "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" } } } }
источник