Библиотека управления веб-пользователями 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, созданных первой ссылкой.
Ответ 3
Я нашел учебник Создание и использование библиотек пользовательского управления, но это похоже на взлох, поскольку он полагается на пост-сборку командной строки для копирования пользовательских элементов управления из одного проекта в другой.
Ответ 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 выполняет свою "автоматическую" вещь.