Интеграция ASP.NET MVC Razor Views внутри DLL - PullRequest
0 голосов
/ 23 мая 2018

У меня есть проект ASP.NET MVC 5.2.6. Короче говоря, когда я хочу опубликовать веб-сайт, я не хочу публиковать представления как свободные *.cshtml файлы в папке Views, я хочу интегрироватьViews внутри dll.

Я нашел этот вопрос , речь идет о компиляции ASP.NET MVC Razor Views, я применил его, и это сработало для меня, и я смогскомпилировать ASP.NET MVC Razor Views, но я НЕ смог от них избавиться, когда я удалил файлы * .cshtml, веб-сайт больше не работает, это означает, что представления не входят в dll.

Вот ошибка, когда я удаляю папку Views

enter image description here

, которая, очевидно, говорит, что он не может найти представление.Должен ли я написать некоторый код для манипулирования поисковой системой Razor, чтобы заставить его заглянуть внутрь DLL?

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

Ссылка на ответ, который вы добавили к своему сообщению, достаточна во время процесса разработки, поэтому она помогает вам обнаруживать все ошибки компиляции, а не при выполнении, когда представления компилируются на лету.

Это редкоскомпилировать представления в DLL во время разработки.Вам нужно скомпилировать их для каждого представления, для каждой папки, для каждой страницы и элемента управления или в одну единственную DLL только во время публикации приложения.

Итак, настройки вашего профиля публикации выглядят так:

enter image description here

Нажмите на ссылку Настроить и послечто у вас будет это диалоговое окно:

enter image description here

В приведенном выше окне вы можете выбрать, какой вариант компиляции вы хотите.

Опять выне нужно компилировать ваши представления в DLL во время процесса разработки.Во время этого процесса просто измените csproj, и этого достаточно.

0 голосов
/ 23 мая 2018

Это, вероятно, то, что вы ищете: https://github.com/RazorGenerator/RazorGenerator

Это сгенерирует ваши файлы просмотра как одну dll для вас.

Хотя я, возможно, не совсем понимаю или не согласен с доводами этого подхода к вашему решению, поскольку он не обязательно обеспечивает лучшую механику безопасности, поскольку библиотеки DLL могут быть декомпилированы, а источник удален.Если у вас хорошая безопасность на сервере и вы используете best practices, имея необработанные html-файлы, вам будет проще управлять.

0 голосов
/ 23 мая 2018

Подумав, единственный способ, который я могу придумать, даже попытаться выполнить то, что вы просите, - это генерировать файлы cshtml на лету в коде.Но я никогда даже не думал об этом раньше.

Я думаю, что настоящие ответы - это изменение политики безопасности, поскольку она не подходит для цели.Или используя что-то отличное от ASP.NET MVC.

В конце концов ASP.NET MVC в конце концов просто отправляет файлы клиенту, который их запросил.

...