Как вы помещаете весь сайт asp.net в одну DLL? - PullRequest
1 голос
/ 13 мая 2009

Я строю каркас веб-приложения на C # для Asp.Net. Фреймворк состоит из смеси dll-файлов, aspx-файлов с файлами codebehind, кодовых файлов в App_Code, css-файлов и изображений.

Я смотрел на проект «Веб-приложение» в Visual Studio 2008. Это помогает удалить все файлы кода и поместить их в одну DLL в папке bin. Но все остальные файлы остаются.

Я думаю, что можно поместить эти файлы в файл ресурсов и включить их в файл dll. Я вижу, что некоторые провайдеры управления делают это, например Telerik.

Как ты это делаешь? И есть ли какой-то автоматизированный процесс для этого, так как количество файлов превышает 1000.

Любая помощь очень ценится!

Ответы [ 3 ]

3 голосов
/ 13 мая 2009

Вы можете фактически свести сайт к одной сборке, файлу web.config и файлу global.asax.

Для этого вставьте весь свой статический контент (изображения и т. Д.) В сборку, используя встроенные ресурсы. Это то, что делают производители компонентов, такие как Telerik, чтобы обеспечить развертывание отдельных сборок для своих элементов управления. Затем встроенные ресурсы могут обслуживаться с использованием поставщика виртуального пути. Есть хорошая статья , чтобы начать работу с провайдерами виртуальных путей на MSDN. При использовании проекта веб-приложения вы даже можете встраивать страницы (.aspx) и пользовательские элементы управления (.ascx) в качестве ресурсов.

Используя модуль маршрутизации, вы можете реализовать практически прозрачный перевод URL-адресов на страницы, встроенные в сборку.

Однако есть несколько ограничений.

  • IIS6 не будет обслуживать статический контент из вашей сборки по умолчанию. Либо используйте пользовательский обработчик (например, files.ashx / my / static / content.jpg), либо настройте IIS для маршрутизации всех запросов к вашему приложению с использованием сопоставления с подстановочными знаками.
  • Вы потеряете часть поддержки дизайнера в Visual Studio при встраивании страниц в сборку.
2 голосов
/ 13 мая 2009

В ASP.NET действительно нет подхода «скомпилировать в одну DLL» (к сожалению, я сам много раз хотел этого!).

Как вы заметили, веб-приложение помогает несколько уменьшить беспорядок.

Web Deployment также помогает, поскольку код веб-страниц скомпилирован в одну DLL, и вы действительно можете удалить файлы *.aspx/*.ascx из вашей установки (если она не обновляется), но у вас все еще есть много *.compiled файлов лежат вокруг.

Так что, к сожалению, я думаю, что на данный момент не существует готового решения для ваших требований (и, насколько я слышал, ничего подобного не запланировано на VS2010 / ASP.NET 4.0 либо).

Марк

1 голос
/ 10 мая 2010

ASP.Net вроде "компилировать в одну DLL" с аддонами от Microsoft. Посмотрите на дополнение "Веб-развертывание". Это даст вам возможность скомпилировать почти все в одну DLL, включая элементы управления ASCX (что является отличным способом их легкого перераспределения).

...