Компонент C # не обновляется при обновлении исходного кода
-
01-07-2019 - |
Вопрос
У меня есть решение для многих проектов.Один проект содержит несколько пользовательских компонентов.Один из этих компонентов используется для отображения заголовка на изображении.Мы можем изменить цвет фона и многое другое.
Проблема в том, что ЕСЛИ я решу изменить цвет фона компонента по умолчанию или изменить положение текста, это изменение не отразится во всех других проектах решения, где используется компонент.Я скомпилировал проект компонента, и все другие проекты ссылаются на компонент в проекте.
На данный момент все, что мне нужно сделать, это удалять компоненты из другого проекта один за другим и добавлять их обратно, тогда все в порядке.У вас есть быстрый способ сделать это?
Обновить Я добавил флажок внутри этого компонента, и кажется, что флажок есть везде!Прекрасно!Но когда у свойства есть некоторый тег, который позволяет компоненту изменяться (например, цвет фона), это не изменяет значение "по умолчанию", а вместо этого помещает старое значение в качестве измененного значения в свойстве.Итак, я вижу, что старое значение установлено, как если бы я добавил вручную измененный цвет на панели свойств, когда я этого не сделал...
ОБНОВЛЕНИЕ 2 альтернативный текст http://img517.imageshack.us/img517/9112/oldonenewoneei0.png
Обновление 3:
Эта проблема все еще существует.Просто чтобы люди знали, что мне все еще интересно найти способ.
Я попробовал несколько ваших предложений.
- Если я очищу все решение и создам только тот проект, у которого есть пользовательский элемент управления, тогда я создам решение.Ничего не изменилось (чтобы протестировать это, я изменил цвет компонента на желтый.Ничего не изменится : потерпеть неудачу.
- Если я удалю ссылку и добавлю ее обратно в проект, а затем перестрою решение.Я вижу старый цвет в дизайне : потерпеть неудачу.
Я обновил вопрос дополнительной информацией и изображением (выше) для тех, кто хочет попытаться мне помочь.
Как вы можете видеть, старая "компиляция" компонента показывает желтый фон, но когда я вставляю новый компонент (с левой панели инструментов в Visual Studio) У меня может быть новый компонент с предполагаемым БЕЛЫМ фоном...
Решение
Скорее всего, это связано с ссылки.
Вероятно, ваши другие проекты копировать в справочнике к вашему компонентному проекту.Вам придется перестроить эти другие проекты, чтобы они могли быть повторно скопированы в проекте компонента, на который дана ссылка, если он изменился.Он обновляется только во время сборки.
Вы можете в какой-то степени обойти это, включив их в одно и то же решение.В этом случае вы можете настроить свой зависимости проекта правильно, и он должен обрабатывать все за вас в основном автоматически.Но иметь все в одном решении не всегда правильно.
Если у вас уже есть они в составе одного и того же решения или это не проблема со ссылками, это может быть связано с сериализация компонентов.Мы часто сталкивались с этой особенностью при разработке пользовательских элементов управления.
Другие советы
Я предполагаю, что дизайнер умен и запоминает настройки компонента в том виде, в каком он есть у вас в конструкторе, и, таким образом, видит его по умолчанию.
Это звучит необычно.Щелчок правой кнопкой мыши по решению и нажатие "Очистить решение" может помочь (это удалит все библиотеки DLL и исполняемые файлы из каталога bin каждого проекта, что приведет к появлению новых сборок)
Возможно, вы также захотите проверить последовательность выполнения заказа на сборку.
Я работаю над проектом, у которого есть похожая проблема, я обнаружил, что если вы коснетесь файла конфигурации .NET или файла информации о сборке (в зависимости от типа вашего проекта).Затем изменения в компонентах будут отражены в других проектах...
Я не уверен, почему это происходит, но именно так я это преодолеваю...
Недавно я переключился на сборку всего через Nant, и это полностью решает проблему.
Иногда визуальный дизайнер сериализует все ваши свойства в коде, даже если они имеют значение по умолчанию.
Если у вашего компонента задний цвет по умолчанию красный, и вы измените задний цвет по умолчанию на синий, компоненты, использующие ваш компонент, снова изменят его на красный.