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