Я занимался этим уже довольно давно, и использовал как виртуальные каталоги, так и подходы "пользовательской библиотеки управления", и нашел, что они оба хотят. Я удивлен, что Microsoft не решила эту проблему, чтобы скомпилировать пользовательские элементы управления, которые будут использоваться как серверные элементы управления.
В любом случае ...
Есть два удобства, на которые большинство из нас обращают внимание при попытке создания библиотеки пользовательского элемента управления:
- Легко развиваться против. Если мы
изменить пользовательский элемент управления, мы хотим сделать
это одно место. Мы хотим быть в состоянии
редактировать и отлаживать в сети
мы работаем, без необходимости
управлять несколькими копиями ascx
файл.
- Простота развертывания. Мы хотим быть
возможность захватить и опубликовать ascx
файлы на нескольких веб-сайтах
без особых хлопот.
К сожалению, подход виртуального каталога адресован только адресам № 2, а «библиотеки управления пользователями» - адресам № 2 и только части № 1. С помощью «библиотеки пользовательского управления» вы можете отлаживать исходный код пользовательской библиотеки управления, но если вы отредактируете ascx в своем рабочем вебе, изменения будут перезаписаны при следующем создании «библиотеки пользовательского управления». Это похоже на то, как работает серверный элемент управления: его нужно редактировать в другом месте и нужно скомпилировать для обновления. Исключением является то, что «пользовательские библиотеки управления» должны быть скопированы, а не просто обновлять ссылку на DLL.
Решение
То, что я использовал для решения # 1, это символические ссылки . Создайте общую папку элементов управления в своем хранилище и вставьте ссылку на эту папку в каждую из веб-страниц по своему усмотрению. Любые изменения, которые вы делаете в папке символических ссылок, делаются в исходной папке общих элементов управления.
Чтобы решить # 2, я просто развернул полные сайты с элементами управления, скопированными в их соответствующие местоположения. Вместо этого вы также можете легко создать виртуальный каталог и не развертывать папку с символическими ссылками на каждом веб-сайте. Я склонен отвлекаться от виртуальных каталогов за общие хост-источники управления пользователями, опасаясь проблем с производительностью (много сетей, тонны трафика).
Надеюсь, это поможет!