Компонент C # не обновляется при обновлении исходного кода

StackOverflow https://stackoverflow.com/questions/85866

  •  01-07-2019
  •  | 
  •  

Вопрос

У меня есть решение для многих проектов.Один проект содержит несколько пользовательских компонентов.Один из этих компонентов используется для отображения заголовка на изображении.Мы можем изменить цвет фона и многое другое.

Проблема в том, что ЕСЛИ я решу изменить цвет фона компонента по умолчанию или изменить положение текста, это изменение не отразится во всех других проектах решения, где используется компонент.Я скомпилировал проект компонента, и все другие проекты ссылаются на компонент в проекте.

На данный момент все, что мне нужно сделать, это удалять компоненты из другого проекта один за другим и добавлять их обратно, тогда все в порядке.У вас есть быстрый способ сделать это?

Обновить Я добавил флажок внутри этого компонента, и кажется, что флажок есть везде!Прекрасно!Но когда у свойства есть некоторый тег, который позволяет компоненту изменяться (например, цвет фона), это не изменяет значение "по умолчанию", а вместо этого помещает старое значение в качестве измененного значения в свойстве.Итак, я вижу, что старое значение установлено, как если бы я добавил вручную измененный цвет на панели свойств, когда я этого не сделал...

ОБНОВЛЕНИЕ 2 альтернативный текст http://img517.imageshack.us/img517/9112/oldonenewoneei0.png

Обновление 3:

Эта проблема все еще существует.Просто чтобы люди знали, что мне все еще интересно найти способ.

Я попробовал несколько ваших предложений.

  1. Если я очищу все решение и создам только тот проект, у которого есть пользовательский элемент управления, тогда я создам решение.Ничего не изменилось (чтобы протестировать это, я изменил цвет компонента на желтый.Ничего не изменится : потерпеть неудачу.
  2. Если я удалю ссылку и добавлю ее обратно в проект, а затем перестрою решение.Я вижу старый цвет в дизайне : потерпеть неудачу.

Я обновил вопрос дополнительной информацией и изображением (выше) для тех, кто хочет попытаться мне помочь.

Как вы можете видеть, старая "компиляция" компонента показывает желтый фон, но когда я вставляю новый компонент (с левой панели инструментов в Visual Studio) У меня может быть новый компонент с предполагаемым БЕЛЫМ фоном...

Это было полезно?

Решение

Скорее всего, это связано с ссылки.

Вероятно, ваши другие проекты копировать в справочнике к вашему компонентному проекту.Вам придется перестроить эти другие проекты, чтобы они могли быть повторно скопированы в проекте компонента, на который дана ссылка, если он изменился.Он обновляется только во время сборки.

Вы можете в какой-то степени обойти это, включив их в одно и то же решение.В этом случае вы можете настроить свой зависимости проекта правильно, и он должен обрабатывать все за вас в основном автоматически.Но иметь все в одном решении не всегда правильно.

Если у вас уже есть они в составе одного и того же решения или это не проблема со ссылками, это может быть связано с сериализация компонентов.Мы часто сталкивались с этой особенностью при разработке пользовательских элементов управления.

Другие советы

Я предполагаю, что дизайнер умен и запоминает настройки компонента в том виде, в каком он есть у вас в конструкторе, и, таким образом, видит его по умолчанию.

Это звучит необычно.Щелчок правой кнопкой мыши по решению и нажатие "Очистить решение" может помочь (это удалит все библиотеки DLL и исполняемые файлы из каталога bin каждого проекта, что приведет к появлению новых сборок)

Возможно, вы также захотите проверить последовательность выполнения заказа на сборку.

Я работаю над проектом, у которого есть похожая проблема, я обнаружил, что если вы коснетесь файла конфигурации .NET или файла информации о сборке (в зависимости от типа вашего проекта).Затем изменения в компонентах будут отражены в других проектах...

Я не уверен, почему это происходит, но именно так я это преодолеваю...

Недавно я переключился на сборку всего через Nant, и это полностью решает проблему.

Иногда визуальный дизайнер сериализует все ваши свойства в коде, даже если они имеют значение по умолчанию.

Если у вашего компонента задний цвет по умолчанию красный, и вы измените задний цвет по умолчанию на синий, компоненты, использующие ваш компонент, снова изменят его на красный.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top