Laden...

Namespace Fehler

Erstellt von Taladan vor 13 Jahren Letzter Beitrag vor 13 Jahren 8.843 Views
Taladan Themenstarter:in
582 Beiträge seit 2008
vor 13 Jahren
Namespace Fehler

Hallo zusammen,

ich habe da ein Problem mit Namespaces. Um mein Projekt bissl strukturierter auf zu bauen, habe ich Bestandteile in alternative Namespaces gepackt. Jetzt bekomme ich nur immer probleme beim laden des Designers. Obwohl im laufenden Betrieb keine Probleme auftauchen, wird im Designer nichts angezeigt.

Ich erhalte folgende Begründung:
Fehler 3 Für XAML-Dateien, die nicht Bestandteil eines Projekts sind, muss eine Assembly angegeben werden. Öffnen Sie diese XAML-Datei noch einmal, nachdem Sie sie einem Projekt hinzugefügt haben. Schließen Sie die Datei, und öffnen Sie sie unter Verwendung des verknüpften Projekts erneut, oder ändern Sie den CLR-Namespace, indem Sie den Assemblynamen hinzufügen.

und binde so meine Namespaces ein.
xmlns:local="clr-namespace:MeinNamespace"

Weiß jemand Rat?

Gruß dat Tala

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo Taladan,

entweder ist es ein Fehler vom Designer oder Visual Studio braucht noch die Angabe der Assembly. Versuch mal hinter clr-namespace:MeinNamespace folgendes noch hinzuzufügen: ;assembly=<AssemblyName>.

zero_x

Taladan Themenstarter:in
582 Beiträge seit 2008
vor 13 Jahren

Hatte ich auch schon vermutet, aber wo finde ich die Bezeichnung der eigenen Assembly, da mein Projekt Leerzeichen im Namen hat, wird es wohl kaum der Name sein.

Gruß dat Tala

1.346 Beiträge seit 2008
vor 13 Jahren

Properties => Assemblyname

Taladan Themenstarter:in
582 Beiträge seit 2008
vor 13 Jahren

Ok. Ausprobiert und Fail.

Egal wie ich es referenziere. Ich bekomme den Designer selten dazu das an zu zeigen, was ich erwarte.

Wenn ich normal Refernziere (also ohne assembly):

Für XAML-Dateien, die nicht Bestandteil eines Projekts sind, muss eine Assembly angegeben werden. Öffnen Sie diese XAML-Datei noch einmal, nachdem Sie sie einem Projekt hinzugefügt haben. Schließen Sie die Datei, und öffnen Sie sie unter Verwendung des verknüpften Projekts erneut, oder ändern Sie den CLR-Namespace, indem Sie den Assemblynamen hinzufügen.

Der UC:HierarchicalItemView-Typ wurde nicht gefunden. Alle Assemblyverweise müssen vorhanden sein, und alle Assemblys, auf die verwiesen wird, müssen erstellt worden sein.

Und mit Assembly in der Referenzierhung

Das Tag "HierarchicalItemView" ist im XML-Namespace "clr-namespace:Namespace" nicht vorhanden.

Langsam verzweifle ich.

Gruß dat Tala

U
1.578 Beiträge seit 2009
vor 13 Jahren

"Für XAML-Dateien, die nicht Bestandteil eines Projekts sind, muss eine Assembly angegeben werden"
Das sagt doch eindeutig das das "assembly;bla" fehlt
Wenn deine dll Datei ein Leerzeichen enthält ist das kein Problem.

VS hilft dir normalerweise auch immer beim auflösen des namespaces, man muss es eigentlich nie komplett von Hand schreiben.

Egal wie ich es referenziere

Es gibt mehrere Wege?

  1. Die dll bei den Projekt referenzen hinzufügen
  2. das xmlns hinzufügen
    xmlns:MyName= <nun zeigt VS eine liste wo du dein namespace nur raussuchen musst> das endet dann normalerweise in ein:
    xmlns:MyName="clr-namespace:MyNamespace;assembly=My Assembly"

Das Tag "HierarchicalItemView" ist im XML-Namespace "clr-namespace:Namespace" nicht vorhanden.

Du hast ein namespace namens "Namespace"?

  1. Sei sicher das der Name korrekt ist
  2. Schau das dein "HierarchicalItemView" sich in diesen namespace befindet
  3. Stell sicher das "HierarchicalItemView" auch public ist
  4. Überprüfen zudem das die .dll Datei die selbe .Net Version verwendet wie dein Projekt (es geht nur Abwärtskompatibel)
Taladan Themenstarter:in
582 Beiträge seit 2008
vor 13 Jahren

Das Assembly ist das Projekt, ich kann wohl kaum eine Referenz auf das eigene Projekt hinzu fügen. Daher ist es keine externe DLL (mit unterschiedlich meine ich, ob mit assembly oder ohne geschrieben).

Und natürlich habe ich kein Namespace namens Namespace. Das war als Platzhalter gedacht. Zu den anderen Punkte, ja diese Punkte sind mir auch als erstes eingefallen. Kann ich also komplett abhaken.

Gruß dat Tala

U
1.578 Beiträge seit 2009
vor 13 Jahren

Wenn die Klasse im selben Projekt ist, dann braucht man ";assembly" nicht angeben, dann wäre es (glaub ich) sogar falsch es zu tun, hab da was dunkel in erinnerung.

Du schreibst was es im Laufenden Betrieb geht, passiert etwas im ctor der HierarchicalItemView Klasse? Der Designer durchläuft den kompletten initialisierungscode beim aufbau der View.

Taladan Themenstarter:in
582 Beiträge seit 2008
vor 13 Jahren

Es geht darum, das die Controls im laufenden Betrieb funktionieren, aber der VS Designer und Expr. Blend diese Controls während der Designzeit nicht anzeigen wollen, sie geben die o.a. Meldung aus.

Was soll ein ctor sein?

Gruß dat Tala

U
1.578 Beiträge seit 2009
vor 13 Jahren

Konstruktor (ctor ist der Snippet zum erstellen ^^)

Taladan Themenstarter:in
582 Beiträge seit 2008
vor 13 Jahren

Im Konstruktor lade ich nur solche Dinge wie

InitializeComponent
AddHandler

Also keine Visuellen Dinge.

Witzigerweise funktioniert aber auch machmal der Designer ganz normal, ohne das ich etwas geändert habe. Das ist echt frustierend.

Gruß dat Tala

U
1.578 Beiträge seit 2009
vor 13 Jahren

Also der Fehler wird auftreten wenn er das Control nicht erstellen kann - warum das wissen nur die Götter ^^

Brauchst du diesen Designer denn unbedingt? Viele WPF Entwickler haben nur noch die Full Xaml View und ignorieren den Designer völlig, so auch ich.

Taladan Themenstarter:in
582 Beiträge seit 2008
vor 13 Jahren

Ich guck hin und wieder hin.

Gruß dat Tala

1.820 Beiträge seit 2005
vor 13 Jahren

Hallo!

Schau doch mal beim Starten des Programms in der Programm-Ausgabe nach, ob da WPF-Fehler angezeigt werden. Evtl. werden diese im laufenden betrieb irgendwie abgefangen oder ignoriert, und nur der Designer stellt sich da zickig an. Kenne zwar 2010 nicht (arbeite noch mit 2008), aber benutze eigentlich auch nur die Full XAML View, weil der Designer zumindest in 2008 grottenschlecht ist, gerade bei komplexeren Styles oder Layouts.

Nobody is perfect. I'm sad, i'm not nobody 🙁