Dienstag, 19. Juli 2011

Windows Mobile - .Net Compact Framework Exceptions anzeigen

Bei einem aktuellen Projekt arbeite ich an einer Anwendung für ein Windows CE 5.0 Gerät. Um genau zu sein handelt es sich um einen Scanner vom Typ Casio DT-X7.

Bei der Entwicklung habe ich festgestellt, dass meine Fehlerprotokolle (Logging der Exceptions in eine Textdatei) nicht korrekt geschrieben werden können. Und zwar wurde immer folgende Meldung protokolliert, egal welcher Fehler aufgetreten ist:

"An error message is available for this exception but cannot be displayed because these messages are optional and are not currently installed on this device. Please install ‘NETCFv35.Messages.EN.wm.cab’ for Windows Mobile 5.0 and above or  ‘NETCFv35.Messages.EN.cab’ for other platforms. Restart the application to see the message."

Folglich habe ich mich, ganz wie in der Meldung beschrieben, daran gemacht die angegeben CAB zu installieren. Hierzu habe ich die folgende Datei von meinem PC (Windows Mobile SDK muss installiert sein) auf das mobile Gerät kopiert:

C:\Programme\Microsoft.NET\SDK\CompactFramework\v3.5\WindowsCE\Diagnostics\NETCFv35.Messages.EN.cab

Nach dem Kopieren habe ich die Datei auf dem mobilen Gerät gestartet und erfolgreich installiert.

Hier gilt es zu beachten, dass es im genannten Verzeichnis auch eine Datei "NETCFv35.Messages.EN.wm.cab" gibt. Diese Datei ist ausschließlich für Geräte mit Windows Mobile. Die Datei ohne ".wm" im Namen ist für alle weiteren Systeme wie z. B. Windows CE.

Verwendet man versehentlich die falsche Datei, so kommt eine Fehlermeldung vor der Installation wie z. B. folgende:

The file "NETCFv35.Messages.EN.wm.cab" is not a valid Windows CE Setup file.

In diesem Fall empfehle ich einfach noch einmal genau hinzuschauen und ggf. auch einmal das Bestriebssystem auf dem mobilen Gerät zu überprüfen. Manchmal hat man vielleicht doch etwas verwechselt oder übersehen.

Wurde aber alles korrekt installiert, so sollten auch die Fehlermeldungen wieder korrekt angezeigt/protokolliert werden.

Bei mir war dieses aber nicht der Fall. So musste ich weitersuchen.
Hierfür habe ich mir die kostenfreien Windows Mobile Power Toys von Microsoft installiert und mit dem MobileLogger geschaut, ob es noch irgendwelche Probleme gibt. Und ich bin direkt fündig geworden. Der Logger zeigt mir die Meldung:

"Failed to load [System.SR, Version=3.5.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC]"

Das Problem hier ist, dass eine im CAB enthaltene Datei unter anderem Namen vorliegt, als sie eigentlich referenziert ist. Und zwar handelt es sich hierbei um die Datei "SYCCFA~1.001". Als Referenz wird der Name "System.SR" erwartet. Helfen kann man sich hier ganz einfach, in dem man die CAB-Datei entpackt, die Datei in "System.SR.dll" umbenennt und diese anschließend im sein Windows Mobile Projekt als Referenz einbindet.

Jetzt wurden sogar bei mir alle Fehlermeldungen korrekt ausgegeben.

Keine Kommentare:

Kommentar veröffentlichen