HTC HD2 – es geht munter weiter

Wem diese Fehlermeldung kryptisch und nichtssagend vorkommt, dem würde ich ungesehen zustimmen. Die Fehlermeldung hat für mich leider gar keine Aussagekraft:

Exception
bei Microsoft.AGL.Common.MISC.HandleAr()
bei System.Windows.Forms.Control._SetBoundsCore()
bei System.Windows.Forms.Control.set_Location()
bei XXX.Programme.XXX.frmAnmeldung.InitializeComponent()
bei XXX.Programme.XXX.frmAnmeldung..ctor()
bei XXX.Programme.XXX.xxxMain.Main()

Das Problem ist auch beim Debuggen nicht wirklich auf den ersten Blick zu finden. Der Übeltäter jedoch ist ein kleines, normales Windows Steuerelement aus dem .NET Compact Framework, dass HTC mit dem HD2 nicht mehr unterstützt:

image

Ein ganz normaler Monatskalender, der bislang auf jedem System einwandfrei funktioniert hat. Nur auf dem HD2 gibt es ein gewaltiges Problem. Programmtechnisch finde ich das eher suboptimal, da das Austauschelement im Moment nur der normale Datetimepicker sein kann. Und das der sich nicht so gut in das Anwendungsbild fügt, wie die obere Abbildung kann man verstehen:

image

 

Also: im großen und ganzen wieder viel Ärger um nichts, mobile Anwendungsentwicklung auf Windows Mobile Basis bleibt immer spannend. Ich freu mich schon auf das neue Windows Phone 😉

 

UPDATE:

HTC hat einen kleinen Registrykey, welcher auf ein HTC-eigenes Steuerelement verweist eingebaut. Wenn man den umbenennt, dann gibt’s keine Probleme mehr mit dem regulären Monatskalender.

Zu finden ist der Key auf dem mobilen Gerät unter: [HKEY_LOCAL_MACHINE\System\GWE\Commctrl\CustomDateT imeCtrl] = \windows\htcDTP.dll

the type initializer for ’system.data.sqlclient.sqlconnection‘ threw an exception

Heute ist mir zum ersten Mal die oben genannte Fehlermeldung untergekommen.  Es begann mit dem Start unserer Anwendung wo bereits die Fehlermeldung auftauchte, dass die Datenbankkonfiguration aus der app.config nicht ausgelesen werden konnte:

System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize.

Das zog sich prima durch, nachdem man eine neue Datenbankverbindung auswählen musste, konnte man die Konfiguration nicht speichern. Wenn man sich dann an dem SQL-Server 2005 Express anmelden wollte, kam die Meldung:

the type initializer for ’system.data.sqlclient.sqlconnection‘ threw an exception.

 

In den Details der Fehlermeldung ging es um ungültige Zeichen in der machine.config Datei des .NET Frameworks 2.0, die das Framework daran hinderten, sich korrekt zu initialisieren :

Configuration system failed to initialize. Die machine.config (zu finden unter: “C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Config\machine.config”) sah dann auch entsprechend aus:

 

Ausschnitt machine_config

 

Nachdem ich die ungültigen Zeichen aus der Datei entfernt hatte, lief die Anwendung sofort wieder reibungslos.

Bleibt nur noch die Frage, warum die Datei so “verhunzt” wurde. Darauf kann ich leider bislang keine Antwort geben.

.Net Framework deinstallieren

Das .Net Framework (gleichgültig welche Version) lässt sich normalerweise über die Systemsteuerung deinstallieren. In unserem Fall ging das heute leider nicht mehr, da wir wohl etwas an der Sicherheitskonfiguration des .Net Framework 2.0 rumgebastelt haben. Dadurch wurde die Deinstallation leider immer abgebrochen. Abhilfe schafft in diesem Fall das .NET Framework cleanup tool.

Info:

The updated version of the cleanup tool contains options to clean up the .NET Framework 1.0, 1.1, 2.0, 3.0 and 3.5 separately and all versions simultaneously in a single step.

Der neue Yahoo! Messenger für Windows Vista

Der neue Yahoo Messenger basiert auf der Windows Presentation Foundation und sieht ziemlich cool aus, wie ich finde:

Yahoo!’s nächster Messenger wurde gerade auf der CES in Las Vegas vorgestellt und … wow. Vollständig neu entwickelt auf dem .NET Framework und basierend auf der WPF (Windows Presentation Foundation), sieht er echt sehr, sehr gut aus. Er kommt zusätzlich mit einem Sidebar Gadget daher.

Source: Oliver’s life on the web : Der neue Yahoo! Messenger für Windows Vista

MonoDevelop 1.0 im Anmarsch

Eine erste Beta-Version von MonoDevelop 1.0 soll im Januar 2007 erscheinen und dann bereits alle Funktionen beinhalten, die zurzeit noch fehlen. Bis Mitte Februar 2007 sollen dann die meisten Fehler ausgebügelt werden und eine zweite Beta-Version oder ein Release Candidate erscheinen. Etwa Mitte März 2007 rechnet Lluis Sanchez schließlich mit der stabilen Version 1.0, die mit Dokumentation und Tutorials daherkommen soll.

Beim Editor soll vor allem an der Code-Vervollständigung gearbeitet werden, die sich unter anderem weniger auf C# fixieren soll. Ferner sollen Projektdateien von Visual Studio 2005 direkt mit MonoDevelop geöffnet werden können. Neben Subversion soll außerdem noch CVS als Versionskontrolle unterstützt werden und der GTK#-Designer soll verschiedene Funktionen bekommen. Auch die restlichen Add-Ins sollen mehr oder weniger stark erweitert werden.

Quelle und kompletter Bericht: golem.de

Leider habe ich es noch nicht geschafft Mono oder Monodevelop auf meinem Mac zu testen. Es wird aber höchste Zeit, denke ich.

Visual Studio 2005 Projekte mit .Net Framework 1.1 kompilieren

Direkt aus Visual Studio 2005 kann man auch mit installiertem .Net 1.1 Framework nicht in .Net 1.1 kompilieren. Wenn man jetzt aber (aus welchem Grund auch immer, Jörg 🙂 ) trotzdem ein Visual Studio 2005 Projekt in 1.1 kompilieren möchte geht das mittels MSBuild Extras und MSBuild.

Bei heise iX hat Dr. Schwichtenberg einen Artikel dazu verfasst, geht aber nicht näher auf das HowTo ein, das macht er im Artikel „Fleißige Biene“ in der dotnetpro 9/2006.

Was man benötigt:

  1. dotnet Framework 1.1 SDK [download]
  2. MSBee [Infos bei Microsoft, Infos + Download bei Codeplex]

Wie geht man vorgeht:

  1. Installation von SDK und MSBee
  2. Editieren der Projektdatei mit einem beliebigen Texteditor. Hinter dieser Zeile am Ende der Datei:
    "$(MSBuildBinPath)\Microsoft.CSharp.targets" />

    muss diese hier (für C#) ohne Zeilenumbruch eingefügt werden:

    "$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.Fx1_1.CSharp.targets" 
    Condition=" '$(BuildingInsideVisualStudio)' == '' AND '$(TargetFX1_1)'=='true'" />
  3. Danach startet man den Buildvorgang mit MSBUILD (liegt im .net 2.0 Verzeichnis):
    „Msbuid projektdatei.csproj /t:Rebuild /P:TargetFX1_1=true

  4. Fertsch. Bei Bedarf mit ILDASM nochmal kontrollieren, ob es auch passt

  5. Weitere Infos gibt’s in der mitgelieferten MSBee Dokumentation, aber wie oben beschrieben ist es für einen einfachen Vorgang schon passend.