#c# #asp.net-core #razor-components
#c# #asp.net-core #razor-components
Вопрос:
Я тестирую новые компоненты Razor (он же. Ошибка на стороне сервера) и я нахожу необходимым остановить проект, отредактировать, перекомпилировать и перезапустить сервер, что отнимает очень много времени. Я хочу отредактировать файлы *.razor, сохранить, нажать F5 в браузере и готово.
Я знаю, что есть критическое изменение в ASP.NET Ядро 3, которое на некоторое время предотвратило это. Но теперь есть «исправление»: вам просто нужно установить пакет Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
и настроить службу подобным образом:
services.AddMvc()
.AddRazorRuntimeCompilation();
(Да, без Mvc, смотрите это)
Но, похоже, это не работает — по крайней мере, я не пробовал с файлами cshtml, поскольку я использую только *.razor в своих тестах.
Я также сделал:
services.AddMvc()
.AddRazorRuntimeCompilation((options) =>
{
foreach (var item in Directory.GetFiles(Directory.GetCurrentDirectory(), "*.razor", SearchOption.AllDirectories))
{
options.AdditionalReferencePaths.Add(item);
}
});
Безуспешно.
Это еще не поддерживается или я делаю что-то неправильно?
Комментарии:
1. Я не думаю, что это действительно применимо к компонентам Razor. Речь идет о компиляции представления. Компоненты Razor фактически отображаются в DOM-представлении в памяти, которое, судя по его звучанию, было бы сложно изменять каждый раз, когда вы вносите изменения в файл *.razor. Перестройка приводит к удалению дерева в памяти, поэтому оно затем создается заново (таким образом, применяется ваше обновление). Возможно, вам было бы лучше задать этот вопрос в выпуске на странице проекта Github.
2. Нашел это: github.com/aspnet/AspNetCore/issues/8071
3. Привет. Что вы знаете. Мое предположение было в значительной степени правильным. Хотя, немного о dotnet watch, я не рассматривал. Это должно сработать для вас. Вам все равно придется перестроить, но это фактически автоматически запустит сборку для вас.
4. @ChrisPratt точно. Однако основной проблемой для меня является потеря состояния приложения. Но, я думаю, это лучше, чем ничего..
5. Компоненты Razor, похоже, не являются «не имеющими состояния», и я предполагаю, что если мне удастся поддерживать браузер открытым (пытаясь сохранить состояние) между сборками, это приведет к поломке