Как поместить весь веб-сайт asp.net в одну dll?
-
21-08-2019 - |
Вопрос
Я создаю платформу веб-приложений на C# для Asp.Net.Фреймворк состоит из смеси файлов dll, файлов aspx с файлами кода программной части, файлов кода в App_Code, файлов CSS и изображений.
Я просмотрел проект «Веб-приложение» в Visual Studio 2008.Это помогает удалить все файлы кода и поместить их в одну dll в папке bin.Но все остальные файлы остаются.
Я думаю, что должна быть возможность поместить эти файлы в файл ресурсов и включить его в файл dll.Я вижу, что некоторые поставщики средств управления делают это, например Telerik.
Как вы это сделаете?И есть ли какой-то автоматизированный процесс для этого, поскольку количество файлов превышает 1000.
Любая помощь очень ценится!
Решение
Фактически вы можете свести сайт к одной сборке, файлу web.config и файлу global.asax.
Для этого встройте весь свой статический контент (изображения и т. д.) в сборку с помощью встроенных ресурсов.Именно это делают поставщики компонентов, такие как Telerik, чтобы обеспечить развертывание единой сборки для своих элементов управления.Затем встроенные ресурсы можно обслуживать с помощью поставщика виртуальных путей.Eсть хорошая статья чтобы начать работу с поставщиками виртуальных путей на msdn.При использовании проекта веб-приложения вы даже можете встраивать страницы (.aspx) и пользовательские элементы управления (.ascx) в качестве ресурсов.
С помощью модуля маршрутизации можно реализовать практически прозрачную трансляцию URL-адресов на встроенные в сборку страницы.
Однако есть несколько ограничений.
- IIS6 по умолчанию не будет обслуживать статический контент из вашей сборки.Либо используйте собственный обработчик (например.files.ashx/my/static/content.jpg) или настройте IIS для маршрутизации всех запросов к вашему приложению с помощью сопоставления подстановочных знаков.
- Вы потеряете часть поддержки конструктора в Visual Studio при внедрении страниц в сборку.
Другие советы
В ASP.NET действительно нет подхода «компиляции в одну DLL» (к сожалению, я сам много раз мечтал об этом!).
Как вы заметили, веб-приложение помогает несколько уменьшить беспорядок.
Веб-развертывание также помогает, поскольку код веб-страниц компилируется в одну DLL, и вы можете фактически удалить *.aspx/*.ascx
файлы из вашей установки (если они не подлежат обновлению), но у вас все еще есть много *.compiled
файлы валяются.
Поэтому, к сожалению, я думаю, что на данный момент не существует «готового» решения для вашего требования (и, насколько я слышал, ничего подобного для VS2010/ASP.NET не запланировано). 4.0 тоже).
Марк
В ASP.Net есть своего рода «компиляция в одну DLL» с надстройками от Microsoft.Посмотрите на дополнение «Веб-развертывание».Это даст вам возможность компилировать почти все в одну DLL, включая элементы управления ASCX (это отличный способ легко их перераспределить).