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