none
Windows 7 64Bit Form Vererbung Visual Studio 2010 Form RRS feed

  • Frage

  • Hallo,

     

    ich habe gerade auf meinem Windows 7 Rechner eine 32Bit Anwendung geschrieben die eine Form Vererbung nutzt.

    ( Eine Masterform mit einem Button ).

    Wenn ich dann die Vererbte Form in Visual Studio öffne ist alles in Ordnung.

    Das gleiche mache ich dann mit einem neuen Projekt wo ich aber auf 64Bit umstellt und dann kann die Form nicht mehr angezeigt werden.

    Dort kommt dann immer ein Fehler "Could not find Type....." obwohl alles vorhanden ist.

     

    Kann mir da jemand weiterhelfen ?

    Marcus

    Dienstag, 31. Mai 2011 11:06

Antworten

  • Hallo Marcus,

    jetzt verstehe ich. Die Visual Studio IDE läuft als 32 Bit Prozess und kann Dein geerbtes Formular nicht laden, wenn Du es ausschließlich als x64 Assembly erstellst. Zum Laden im Designer greift die IDE auf das kompilierte Assembly zurück und benötigt hier dann ein x86 Assembly.

    Lösung: Erstelle Dein Projekt als AnyCPU Assembly, so dass es automatisch für die passende Plattform kompiliert wird. In der IDE wird es dann als 32 Bit Version geladen, Stand-Alone ausgeführt aber als 64 Bit.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Dienstag, 31. Mai 2011 13:00
    Beantworter

Alle Antworten

  • Hallo Marcus,

    vorhanden ist vielleicht alles, aber ob es auch 64 Bit kompatibel ist, ist die andere Sache. Wenn Du bspw. ActiveX Steuerelemente hast, liegen diese meist in 32 Bit vor und die können nicht von einem 64 Bit Prozess geladen werden. Du musst diese Steuerelemente dann durch entsprechende 64 Bit Komponenten ersetzen oder besser noch nach native .NET Komponenten schauen. Wobei es auch hier vorkommen kann, dass ein Assembly explizit auf die x86 Plattform festgelegt ist und so auch nicht in einem 64 Bit Prozess geladen werden kann.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Dienstag, 31. Mai 2011 12:32
    Beantworter
  • Hallo Thorsten,

     

    danke Dir für Deine schnelle Antwort.

    Das habe ich mir auch gedacht daher habe ich nur eine Form mit einem Button erzeugt und wollte davon vererben. Es gibt also keine Referenzen auf andere Bibliotheken ausser die auf von Microsoft.

    Was lustig ist, das die Anwendung dann in 64Bit läuft aber d.h. der Button wird dann in der vererbten Form angezeigt aber in "Design" Time geht nichts.

     

    Gruß

     

    Marcus


    Marcus
    Dienstag, 31. Mai 2011 12:55
  • Hallo Marcus,

    jetzt verstehe ich. Die Visual Studio IDE läuft als 32 Bit Prozess und kann Dein geerbtes Formular nicht laden, wenn Du es ausschließlich als x64 Assembly erstellst. Zum Laden im Designer greift die IDE auf das kompilierte Assembly zurück und benötigt hier dann ein x86 Assembly.

    Lösung: Erstelle Dein Projekt als AnyCPU Assembly, so dass es automatisch für die passende Plattform kompiliert wird. In der IDE wird es dann als 32 Bit Version geladen, Stand-Alone ausgeführt aber als 64 Bit.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Dienstag, 31. Mai 2011 13:00
    Beantworter
  • Hallo Marcus,

    es wäre einfacher dir zu helfen, wenn Du den entsprechenden Code veröffentlichen würdest und bei Fehlermeldungen den kompletten Text (mehr als vier Worte). So kann man nur raten.

    Schöne Grüße

    Oliver

    Dienstag, 31. Mai 2011 13:01
  • Vielen Dank für die schnelle Antwort und die Erläuterungen. So was hatte ich mir schon gedacht.

     

    Das mt dem Code ist wahr, daran habe ich nicht gedacht, das wird beim nächsten mal auf jedenfall gemacht.

     

    Vielen Dank noch mal

     

    Marcus


    Marcus
    Dienstag, 31. Mai 2011 13:10