2008-09-17 23 views
1

Ich habe eine Lösung mit vielen Projekten. Ein Projekt enthält wenige benutzerdefinierte Komponenten. Eine dieser Komponenten wird verwendet, um einen Titel auf einem Bild anzuzeigen. Wir können die Farbe des Hintergrundes und vieler anderer Sachen ändern.C# -Komponente wird nicht aktualisiert, wenn der Quellcode aktualisiert wurde

Das Problem ist, wenn ich beschließe, die Standardfarbe des Hintergrunds der Komponente zu ändern oder die Position des Textes zu ändern, wird diese Änderung nicht in allen anderen Projekten der Lösung widerspiegeln, wo die Komponente verwendet wird. Ich habe das Projekt der Komponente und aller anderen Projekte kompiliert. Referenziere die Komponente durch das Projekt.

Für den Moment, was ich tun muss, ist die Komponente aus dem anderen Projekt einzeln zu entfernen und es wieder hinzuzufügen, dann ist alles in Ordnung. Hast du einen schnellen Weg es zu tun?

UPDATE Ich habe eine CheckBox in dieser Komponente hinzugefügt und es scheint, dass die Checkbox überall ist! Fein! Wenn eine Eigenschaft jedoch über ein Tag verfügt, mit dem die Komponente geändert werden kann (z. B. die Hintergrundfarbe), wird der Standardwert nicht geändert, stattdessen wird der alte Wert als geänderter Wert in die Eigenschaft eingefügt. So sehe ich der alte Wert gefasste wie wenn ich manuell hinzufügen, die Farbe im Eigenschaftenfenster geändert, wenn ich nicht ...

UPDATE 2 alt text http://img517.imageshack.us/img517/9112/oldonenewoneei0.png

Update 3:

Dieses Problem ist immer noch hier. Nur um die Leute wissen zu lassen, dass ich immer noch neugierig bin, einen Weg zu finden.

Ich habe einige Ihrer Vorschläge ausprobiert.

  1. Wenn ich die gesamte Lösung säubere und nur das Projekt mit dem Custom-Steuerelement erstelle, dann baue ich die Lösung. Nichts ändern (Um es zu testen, habe ich die Farbe der Komponente in Gelb ändern. Nichts ändern: Fehler.
  2. Wenn ich die Referenz entfernen und fügen Sie es zurück zum Projekt und dann die Lösung neu erstellen. Ich kann die sehen alte Farbe im Designer. scheitern

ich habe die Frage mit mehr Informationen und ein Bild (siehe oben) für diejenigen, die wollen, dass mir aktualisiert, um zu versuchen

zu helfen Wie Sie sehen können, die. altes "compile" der Komponente zeigt den gelben Hintergrund aber wenn ich eine neue Komponente einfüge (aus der linken Werkzeugleiste in Visual Stu dio) Ich kann die neue Komponente mit dem vermeintlichen WEISSEN Hintergrund haben ...

+0

Sind die Referenzen Projektreferenzen (Alle Projekte müssen in derselben Lösung oder DLL-Referenzen sein? Projektreferenzen sollten dieses Problem nicht anzeigen. – Gishu

+0

Es ist Projektreferenz –

Antwort

1

Dies liegt höchstwahrscheinlich an references.

Ihre anderen Projekte wahrscheinlich copy in a reference zu Ihrem Projekt Komponente. Sie müssen diese anderen Projekte neu erstellen, damit sie im referenzierten Komponentenprojekt erneut kopiert werden können, falls es sich geändert hat. Es wird nur zur Erstellungszeit aktualisiert.

Sie können etwas umgehen, indem Sie sie Teil der gleichen Lösung haben. In diesem Fall können Sie Ihre project dependencies richtig einrichten und es sollte die Dinge für Sie meist automatisch behandeln. Aber alles in der gleichen Lösung zu haben ist nicht immer das Richtige.

Wenn Sie bereits Teile derselben Lösung haben oder es sich nicht um ein Referenzproblem handelt, liegt dies möglicherweise an component serialization. Wir haben diese Eigenart bei der Entwicklung von kundenspezifischen Steuerungen oft erlebt.

+0

Das Projekt, das die benutzerdefinierte Komponente enthält, befinden sich in der gleichen Lösung des anderen Projekts die verwenden es. Die Referenz ist nach Projekt. –

0

Meine Vermutung ist, dass der Designer schlau ist und merkt sich die Einstellungen für die Komponente so wie man sie im Designer hat und sieht sie damit als Standard an.

0

Das klingt nicht üblich. Wenn Sie mit der rechten Maustaste auf die Lösung klicken und "Clean Solution" drücken, werden alle dlls und ausführbaren Dateien aus dem Bin-Verzeichnis des Projekts gelöscht, was neue Builds erzwingt.

Sie können auch Ihre Buildreihenfolge überprüfen.

0

Ich arbeite an einem Projekt, das ein ähnliches Problem hat, habe ich gefunden, wenn Sie die .NET-Konfigurationsdatei oder Assembly-Informationsdatei berühren (abhängig von Ihrem Projekttyp). Die anderen Projekte werden dann die Komponente Änderung widerzuspiegeln ...

Ich bin nicht sicher, warum dies geschieht, aber das ist, wie ich es überwinden ...

Vor kurzem habe ich Schalter zu bauen alles über Nant und das kümmert sich um das Problem insgesamt.

0

Manchmal serialisiert Visual Designer alle Ihre Eigenschaften im Code-Behind, auch wenn sie den Standardwert haben.

Wenn Ihre Komponente eine Standard-Hintergrundfarbe von Rot hat und Sie die Standard-Hintergrundfarbe in Blau ändern, werden die Komponenten, die Ihre Komponente verwenden, wieder in Rot geändert.

Verwandte Themen