ASP.NET Core 2. Как отменить компиляцию cshtml (Razor View) в dll

Дано: проект на ASP.NET Core 2 в Visual Studio.
Задача: отключить компиляцию cshtml (Razor View) в dll.



По умолчанию при компиляции (публикации) проекта все файлы представлений (cshtml-страницы Razor View) собираются в одну dll-библиотеку - view.dll (делается по умолчанию с версии Core 2):


Это существенно ускоряет запуск и работу приложения, но пропадает возможность вносить изменения в представления "на лету", а ведь какой это соблазн иметь такую возможность, править что-то сразу в продакшене :)

Так вот, если очень хочется всё-таки иметь в окончательном проекте чистые cshtml-файлы, а не одну dll, то можно отменить компиляцию представлений.
Для этого в файле проекта (файл с расширением .csproj) нужно скорректировать (или добавить, если нет) параметр MvcRazorCompileOnPublish, установив его в значение false:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
  </PropertyGroup>

Пример установки параметра:


В итоге в опубликованной папке проекта появится директория Views со всеми cshtml-файлами, однако в придачу мы еще получим папку refs со всеми связными библиотеками (и размер проекта соответственно возрастет):


В таком проекте можно редактировать cshtml-файлы представлений на лету в работающем проекте (может понадобиться на этапе запуска проекта для оперативного исправления ошибок на странице).

Соответственно, чтобы вернуть всё обратно, просто устанавливаем этот параметр в true или можно его вообще удалить.


(с) Ella S.
Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.

Комментариев нет:

Отправить комментарий