Управление слабосвязанными ссылками на сборки, возникающими в результате использования атрибута «Конструктор» - PullRequest
1 голос
/ 02 февраля 2011

Мы создаем множество компонентов, WinForms, операций Workflow и т. Д., И то, что мы часто используем, это атрибут «Designer». Общая практика при первоначальной разработке заключается в том, что атрибут Designer используется со стилем [Designer(typeof(DesignerType))], чтобы все заработало, а затем он преобразуется в [Designer("AssemblyQualifiedTypeName")], что позволяет удалить DLL разработчика из списка ссылок компонента - это устраняет необходимость для потребителя компонента развертывать библиотеку конструктора вместе со своим продуктом. Такая практика разделения кода времени разработки и времени выполнения на две отдельные библиотеки DLL является обычной практикой, и я являюсь ее сторонником.

Отрицательным побочным эффектом является то, что «имя типа с квалификацией сборки» будет включать версию сборки dll конструктора, поэтому при увеличении версии необходимо выполнить «поиск и замену» по продукту, чтобы убедиться, что они обновлены. все «свободные ссылки» на этого дизайнера.

Наконец, мой вопрос: Может ли кто-нибудь порекомендовать лучшую практику, которая не полагается на «поиск и замену», которая может управлять всеми этими ссылками, чтобы гарантировать, что они всегда актуальны? У нас часто бывает ленивый разработчик, который забывает обновить строку ссылки, в результате чего новая версия компонента связывается с предыдущей версией библиотеки конструктора DLL - которая, конечно, не развертывается, поэтому поддержка во время разработки теряется. Возможно, какая-то форма прагм, макросов, сценариев сборки, магических атрибутов, я не знаю, но должен быть лучший способ сделать это.

Кто-нибудь? (Спасибо)

Ответы [ 2 ]

1 голос
/ 02 февраля 2011

Почему бы не создать единый конструктор, который использует что-то вроде внутренней среды Managed Addin Framework или Activator.CreateInstance для выбора и отображения дизайнера? С помощью этой техники атрибут Designer никогда не изменится ...

0 голосов
/ 24 февраля 2013

Делай, как Microsoft.Взгляните на класс AssemblyRef (System.Windows.Forms.dll) в Reflector.

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