MissingMethodException unhandled?

Hallo zusammen,

ich habe ein merkwürdiges Problem. Seit gestern erhalte ich bei dem Versuch, meine Anwendung auf einem Pocket PC zu debuggen, folgende Fehlermeldung:

System.MissingMethodException was unhandled
Message: Could not load type 'System.Windows.Forms.ComboBox' from assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC'.

Bislang funktionierte alles tadellos, aber offenbar ist im Projekt irgendwas zerschossen worden - sobald ich ein neues anlege, funktioniert alles wunderbar. Die Anwendung läuft nicht einmal mehr im Emulator, daher kann es auch nicht am Mobilgerät liegen.

Was muss ich an welcher Stelle in welcher Datei ändern, damit es wieder läuft? Das Projekt ist sehr umfangreich, und es wäre ein Haufen Arbeit, alles neu zu generieren.

IDE: Visual Studio 2005, .NET 2.0
 
Ist Windows.System.Forms eingebunden? Machst du etwas spezielles oder betrifft es eine ComboBox die du einfach nur auf das Formular gezogen hast?
 
Hallo,

danke erst mal für Deine Rückfrage.

Windows.System.Forms ist definitv eingebunden. Und am Layout bzw. an den Komponenten habe ich ja gar nichts verändert, bislang funktionierte es mit den zwei ComboBoxen jedenfalls hervorragend.

Mir fällt aber gerade ein, dass ich, weil große Codebestandteile obsolet geworden sind, einige Referenzen und Dateien gelöscht habe. Da dürfte aber eigentlich nichts Kritisches dabei gewesen sein, obwohl ich befürchte, dass dies die Ursache sein könnte. Ich habe gerade mal ein neu erstelltes Projekt mit dem vorhandenen verglichen und zumindest von den Dateibezeichnungen her keinen Unterschied festgestellt. Allerdings differiert die Resources.Designer.cs doch recht deutlich vom Ausgangszustand, aber ich weiß nicht, ob dies ausschlaggebend sein kann.
 
Zuletzt bearbeitet:
An der Resources.Designer.cs sollte es nicht liegen. Das ist nur das Designer-File zu den Ressourcen die du eingebunden hast.

Im Moment wüsste ich den Fehler auch nicht, aber wir können einen Test machen um sicherzustellen dass sowohl das Compact Framework auf deinem Gerät, als auch in der Testumgebung in Ordnung sind. Erstelle eine Kleine Testanwendung mit einer ComboBox und deploy diese einmal. Wenn es funktioniert, dann liegt es definitiv an deiner Anwendung.

Sollte es nicht an deiner Anwendung liegen: Compact Framework neu installieren.

Liegt es an deiner Anwendung:

a) Überprüfe nochmals (sicher ist sicher) alle notwendigen Referenzen.
b) Erstelle testhalber per Code eine ComboBox (um zu überprüfen, ob du prinzipiell auf den Namespace und die Klasse Zugriff hast)

Mehr fällt mir jetzt leider dazu nicht ein. Sorry.
 
Hallo Norbert,

das Problem liegt offenbar direkt in meiner Anwendung. Eine neu aufgesetzte Testapplikation mit einer Combobox läuft tadellos.

Ich habe testweise mal eine Referenz zu System.Windows.Forms entfernt. Dann kompiliert VS erst gar nicht, sondern zeigt direkt eine Fehlermeldung. Die MissingMethodException kommt jedoch erst nach dem (erfolgreichen!) Deployment und dem Start der Anwendung.

Ich werde also mal damit beginnen, alles noch einmal neu aufzusetzen. Das wird eine Heidenarbeit :mad:

Trotzdem ganz herzlichen Dank für Deine Ideen!
 
Das Compact Framework 2.0 SP 1 schon mal drüberinstalliert?

Ja, das müsste eigentlich mit den automatischen Updates gekommen sein.

Übrigens habe ich jetzt noch einmal neu angefangen... Alles läuft super und ohne Murren, also fülle ich ein wenig Code ein... Schwupps, kommt die gleiche Fehlermeldung wieder, allerdings dieses mal mit folgendem Inhalt:

Der Typ 'System.Windows.Forms.NumericUpDown' konnte nicht aus der Assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC' geladen werden.

Es muss also offenbar am eingefügten Code liegen, und mittlerweile habe ich die Vermutung, dass "Culture=neutral" die Ursache ist, da ich das Programm für eine mehrsprachige Anzeige entwickle. Das mache ich mit Ressourcen-Dateien, die ich je nach Sprachauswahl einbinde, und arbeite mit CultureInfo bzw. ResourceManager-Objekten.

Es sieht so aus, als kämen Combobox und NumericUpDown nicht mit anderen Culture-Objekten klar. Hier der Code:

C#:
culture = CultureInfo.CreateSpecificCulture("de-DE");
res = new ResourceManager("MyApp.language", typeof(Form_Main).Assembly);

Du hast nicht zufällig eine Idee, ob dies wirklich die Ursache sein kann und wie man es beheben könnte?
 
Daran scheint es doch nicht gelegen zu haben - nach dem Auskommentieren aller Lokalisierungsfunktionen kommt die Fehlermeldung immer noch. Merkwürdig bleibt's auf jeden Fall, zumal es ja zu Beginn alles wunderbar geklappt hat.
 
Fehler gefunden!

Nach dem Löschen jeder einzelnen Codezeile konnte ich die Fehlerursache auf folgende zwei Zeilen reduzieren:

C#:
private Dictionary<byte, DateTime> dictHistory;
private Dictionary<Milk, byte> dictComposition; //Milk ist eigener enum-Typ

Allerdings bleibt mir schleierhaft, warum ausgerechnet hier der Fehler liegt. Offenbar ist die Dictionary-Komponente fehlerhaft :confused:
 

Neue Beiträge

Zurück