Встраивание Просмотр файлов как ресурса внутри двоичного файла - PullRequest
7 голосов
/ 21 марта 2009

Я пытаюсь создать библиотеку .Net с несколькими контроллерами, и я хочу повторно использовать их в нескольких веб-проектах.

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

Есть ли способ, я могу встроить Просмотр файлов внутри DLL в качестве ресурса и передать его в функцию «View ()» как встроенный ресурс.

Чего я хочу добиться, так это того, что я хочу поместить контроллер и соответствующие представления в один файл DLL, чтобы можно было легко распространять библиотеку и управлять ею как одним файлом DLL

(Однажды я уже нашел, создаю собственный класс представления с интерфейсом IView и визуализирую вывод напрямую, записывая в HTML Output Writer, но я предпочитаю использовать файл представления.)

Ответы [ 5 ]

7 голосов
/ 27 апреля 2009

Фил Хаак только что опубликовал сообщение в блоге несколько дней назад, которое, вероятно, поможет вам; Он использует базу данных для хранения представлений и ruby ​​для их обработки, но я думаю, вы могли бы взять его прототип и заставить его работать для представлений, хранящихся в отдельной сборке, довольно легко.

Просто беглый взгляд на код и я думаю, что волшебный соус будет реализовывать VirtualPathProviderViewEngine (см., Например, класс "RubyViewEngine") и вставлять ваш ViewEngine в коллекцию ViewEngines.Engines (см. Global.asax.cs).

2 голосов
/ 30 апреля 2009

Возможно, для этого вы можете использовать VirtualPathProvider .

0 голосов
/ 01 мая 2009

Взгляните на codeplex и посмотрите на Managed Extensibility Framework

Как только вы закончите ...

Посмотрите, что Мартен Баллиау говорит о ASP.NET MVC и инфраструктуре управляемой расширяемости (MEF)

0 голосов
/ 30 апреля 2009

Ознакомьтесь с ASP.NET MVC View Engine, используя проект VB.NET XML Literals в CodePlex http://vbmvc.codeplex.com

Это пользовательский движок, изначально разработанный Дмитрием Робсманом, который является PUM для ASP.NET в Microsoft. Каждое представление является классом VB.NET, а пространство имен (вместо пути к файлу) используется для подключения представлений к контроллерам. Довольно просто скопировать содержимое ваших файлов представления ASPX в литералы XML в этих классах VB. И как классы они компилируются в сборку без каких-либо дополнительных усилий.

Если ваши контроллеры - C #, то, скорее всего, у вас будет 2 DLL, но у Скотта Хансельмана есть пост в блоге о том, как C # и VB будут жить вместе в одной сборке. http://www.hanselman.com/blog/MixingLanguagesInASingleAssemblyInVisualStudioSeamlesslyWithILMergeAndMSBuild.aspx

0 голосов
/ 23 марта 2009

Тип WebFormView в конечном итоге вызывает BuildManager.CreateInstanceFromVirtualPath. В BuildManager нет перегрузки или другой функции для получения ввода из потока, а не из виртуального пути. Поэтому, если вы не хотите реализовывать IView самостоятельно, вам нужно будет распаковать файлы на диск, чтобы они могли быть скомпилированы BuildManager. Вы по-прежнему можете распространять свою DLL как один файл, но файлы aspx должны быть созданы для того, чтобы BuildManager скомпилировал их. Подробнее см. Справка BuildManager .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...