Библиотека управления веб-пользователями ASP.NET

У нас есть куча пользовательских элементов управления, которые мы хотели бы вытащить из веб-приложения и в отдельную сборку/библиотеку, и я подумал, что это будет так же просто, как создать библиотеку классов и потянуть файлы ascx и ascx.cs в проект и компиляцию DLL для повторного использования среди наших приложений.

Однако это было не так.

Наша конечная цель - иметь единую дистрибутивную DLL (похожую на то, как Telerik распространяет свои элементы управления), которую мы можем внедрить в любое веб-приложение. Шаги здесь: Поворот пользовательского элемента .ascx в Распространяемый пользовательский элемент управления был очень прост, но это приводит к тому, что во многих файлах с именем controlname.ascx.guid.dll, что не является желаемым результатом. Я даже не мог заставить их работать, так как у нас есть дополнительные классы, которые необходимо скомпилировать в сборку.

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

Ответ 1

Если вы хотите совместно использовать элементы управления среди проектов, мой опыт показал, что лучший способ - создать пользовательские элементы управления asp.net server вместо usercontrols. Элементы управления пользователя подходят для совместного использования в рамках одного и того же проекта, но не для нескольких.

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

Эта книга неплохо объясняет основы создания элементов управления сервером

Edit:
В настоящее время я разрабатываю библиотеку управления веб-сервером .net. На самом деле я не последовал за каждым пошаговым руководством. В основном я рассматривал использование книги, упомянутой выше, и библиотеки MSDN + Reflector, которая является отличным инструментом для проверки существующих элементов управления MS-сервера и обучения от них.

Ответ 2

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

Из MSDN: Включение пользовательского элемента .ascx в распространяемый настраиваемый элемент управления

Из проекта кода: Прямой способ создания библиотеки пользовательских элементов управления ASP.NET

Вторая ссылка предоставляет решение для нескольких DLL, созданных первой ссылкой.

Ответ 4

Немного поздно, признаюсь.

Чтобы создать повторно используемую библиотеку пользовательских элементов управления; создать новый проект веб-приложений, удалить все леса, добавить (число) пользовательских элементов управления. Создайте проект веб-развертывания из проекта веб-приложения, в свойствах WDP выберите параметр "Объединить весь вывод управления" и назначьте имя для библиотеки и убедитесь, что разрешить обновление этого веб-сайта НЕ проверяется.

Создайте WDP и используйте Reflector для просмотра сгенерированной библиотеки; вы увидите, что он содержит пространство имен ASP, и типы, которые вы тщательно обработали, были переименованы, то есть usercontrol_ascx. На целевом веб-сайте (-ах) добавьте ссылки на BOTH выходные DLL файлы из вашего WDP, добавьте system.web/pages/controls node в web.config, используя пространство имен ASP и имя сборки, которую вы определили в WDP.

Теперь, когда вы используете библиотеку на странице (например), вы должны использовать псевдоним, который вы определили в web.config, и имя типа, как показано в Reflector i.e.

<ucl:usercontrol_ascx ... />

Я счел полезным добавить зависимость для веб-сайта (ов) в WDP, чтобы WDP был создан до веб-сайтов; теперь я могу изменить элементы управления пользователя в WAP, не задумываясь о том, чтобы создать WAP до создания веб-сайта.

Я надеюсь, что кто-то найдет это полезным, поскольку это стоило мне нескольких седых волос, доходящих до этой стадии, и до сих пор VS выполняет свою "автоматическую" вещь.