GOOGLE ADS

Freitag, 22. April 2022

Typ 'xxx.xxx.xxx' konnte nicht gefunden werden. Bitte stellen Sie sicher, dass die Montage

Ich habe StackOverflow durchsucht und ähnliche Probleme gefunden, wenn ich versuche, ein Formular zu öffnen, das auf ein UserControl in einem anderen Projekt verweist.

Ich bekomme die

Um einem möglichen Datenverlust vor dem Laden des Designers vorzubeugen, müssen folgende Fehler behoben werden:

Meldung bezüglich der folgenden zwei Fehler:

Typ „MyNamespace.CommonUi.InformationBox" konnte nicht gefunden werden. Stellen Sie sicher, dass auf die Assembly verwiesen wird, die diesen Typ enthält. Wenn dieser Typ Teil Ihres Entwicklungsprojekts ist, stellen Sie sicher, dass das Projekt mit den Einstellungen für Ihre aktuelle Plattform oder Any CPU erfolgreich erstellt wurde.

UND

Die Variable 'InformationBox1' ist entweder nicht deklariert oder wurde nie zugewiesen.

InformationBox1ist eine Instanz des Benutzersteuerelements, InformationBoxdas sich auf dem Formular im Designer befindet - es wird nur referenziert als;

Friend WithEvents InformationBox1 As MyNamespace.CommonUi.InformationBox

Das MyNamespace.CommonUiProjekt wird erfolgreich erstellt.

Ich bekomme Intellisense in das Projekt, also bin ich ziemlich sicher, dass es richtig referenziert wird.

Bisher das gleiche wie andere Leute hatten:

Dies ist ein Projekt, das von.NET2/x86 in VS2005 zu.NET4/x64 in VS2012 migriert wurde.

Wenn die Lösung jetzt unter 64 Bit läuft, funktioniert sie nicht und ich erhalte diesen Designerfehler. Wenn ich es jedoch auf 32 Bit umschalte (technisch gesehen AnyCPU), kann ich den Designer problemlos öffnen.

Ich habe die anderen Vorschläge in ähnlichen Threads durchgelesen, aber sie sehen keine Lösung (ich bin sogar so weit gegangen wie die Option "Nach links und rechts verschieben, um es neu zu erstellen").


Lösung des Problems

Ich glaube, das Problem ist, dass Visual Studio nativ 32 -Bit ist und man für einige Komponenten (z. B. ListView) in 64-Bit keine GUI-Bearbeitung durchführen kann. Auf Formularen, in denen Sie ListView haben, müssen Sie zB die Lösung auf 32bit ändern, um die GUI zu bearbeiten.

Die Antwort lautet also kurz gesagt, wenn Sie mit diesem Problem konfrontiert sind:

  • Ändern Sie die Lösung auf 32bit oder AnyCPU

  • Bereinigen und erstellen Sie die Lösung/das Projekt neu

  • Öffnen Sie die GUI zum Bearbeiten

  • Speichern, ändern Sie die Lösung zurück auf 64bit

  • Reinigen und neu aufbauen

  • In 64bit laufen

  • Leider gibt es Visual Studio noch nicht in 64 -Bit, daher müssen alle Steuerelemente im 32-Bit-Modus (oder AnyCPU-Modus) entworfen werden.

    Siehe diese Frage als Referenz.
    VS 2010-Designerfehler „Typ XYZ konnte nicht gefunden werden" in Windows7. Funktioniert gut unter XP

    UPDATE:
    Nach Jahren der Recherche war ich endlich dabei, eine geeignete Lösung für das Problem zu finden, meine benutzerdefinierten/32-Bit-Steuerelemente in einer 64-Bit-Umgebung mit dem VS-GUI-Design-Editor zu laden und zu bearbeiten. Beachten Sie, dass dies bis Visual Studio 2019 funktioniert, die Architektur des entworfenen Editors hat sich in VS 2022 geändert, daher bin ich mir nicht sicher, ob dies dort noch funktioniert.

    Im Wesentlichen passieren einige Dinge mit dem Visual Studio-Design-Editor, die Sie daran hindern, benutzerdefinierte/32-Bit-Steuerelemente in einer 64-Bit-Designumgebung zu bearbeiten.

  • Sie werden feststellen, dass Ihr benutzerdefiniertes/32-Bit-Steuerelement nicht angezeigt wird, Toolboxwenn Sie ein Formular in einer 64-Bit-Zielumgebung laden. Dies ist Teil des Hauptproblems, da Ihr Steuerelement nicht in der toolboxangezeigt wird. Wenn VS versucht, ein Formular zu laden, das dieses Steuerelement verwendet (oder eine erweiterte Klasse, die dieses Steuerelement erweitert), wird der Fehler ausgegeben, Typ konnte nicht gefunden werden 'xxx.xxx.xxx' (in der Toolbox ist das der Teil, der nicht angegeben wird)

  • Einer der Gründe, warum die Steuerelemente nicht in der Toolbox angezeigt werden, liegt darin, dass Visual Studio KEINE benutzerdefinierten Steuerelemente aus dem aktuellen Projekt in die Toolbox lädt (entweder automatisch oder wenn Sie versuchen, dies manuell zu erzwingen). Wenn sich also Ihr benutzerdefiniertes 32-Bit-Steuerelement im aktuellen Projekt befindet, wird es von der Toolbox nicht registriert und folglich kann der Editor das Formular nicht laden. Siehe Referenz

  • Die Lösung hier besteht also darin, ein neues Projekt innerhalb derselben Lösung zu erstellen und Ihre benutzerdefinierten/32-Bit-Steuerelemente in einen neuen Namespace innerhalb dieses neuen Projekts zu verschieben. Jetzt kann Visual Studio Ihre Steuerelemente sehen und in die Toolbox. Dies sollte automatisch geschehen, aber Sie können das Attribut auch [ToolboxBitmapAttribute(true)]zu Ihrer öffentlichen Klassendefinition in Ihrem benutzerdefinierten Steuerelement hinzufügen. Sobald Ihr benutzerdefiniertes Steuerelement in der Toolbox angezeigt wird, sollte der Visual Studio-Designeditor keine Probleme haben, die Assembly zu finden und Ihr Formular zu laden, sodass Sie Ihr benutzerdefiniertes 32-Bit-Steuerelement in der 64-Bit-Designumgebung bearbeiten können.

    Keine Kommentare:

    Kommentar veröffentlichen

    Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

    Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...