seeseekey.net - Invictus Deus Ex Machina

Bei der Ent­wick­lung wun­dert man sich ab und an, was für inter­es­sante Pro­jekte in den Wei­ten des Net­zes so umher­schwir­ren. So unter ande­rem das Pro­jekt Script#. Dabei han­delt es sich um eine Erwei­te­rung für das Visual Stu­dio 2012 mit wel­cher es mög­lich ist C# Quell­text (so er gewis­sen Kri­te­rien genügt) in Java­Script umzu­wan­deln, bzw. zu compilieren.

Die Erwei­te­rung wel­che im Quell­text unter https://github.com/nikhilk/scriptsharp zu fin­den ist, steht dabei unter der Apa­che Lizenz und ist somit freie Soft­ware. Nach der Instal­la­tion fügt sie dem Visual Stu­dio neue Pro­jekt­ty­pen hinzu, mit wel­chen man anschlie­ßend arbei­ten kann. Lei­der gibt es von Script# keine Mono­De­ve­lop Vari­ante, so das man im Moment zwin­gend an das Visual Stu­dio gebun­den ist. Aller­dings fin­det sich in der Road­map fol­gen­der Satz:

In terms of code con­tri­bu­tion, it would be espe­cially inte­res­ting to see the deve­lop­ment of import libra­ries for com­mon libra­ries, so they are easily usa­ble right out of the box. It would also be inte­res­ting to see the deve­lop­ment of com­ple­men­tary tools/addins, adding sup­port to other IDEs (esp. Mono­De­ve­lop) and other such com­ple­men­tary pro­jects. Or you might be inte­res­ted in the very core, i.e. the com­pi­ler itself.

Also wenn sich jemand bemü­ßigt fühlt, das ganze für Mono­De­ve­lop in Angriff zu neh­men, der muss nun nicht mehr auf die Ein­la­dung war­ten. Die offi­zi­elle Pro­jekt­seite von Script# ist unter http://scriptsharp.com/ zu finden.

Manch­mal kommt es vor, das man meh­rere Instan­zen von Mono­De­ve­lop unter Mac OS X benö­tigt. Aller­dings wird man fest­stel­len das dies nicht ohne wei­te­res mög­lich ist da OS X nur eine Instanz öff­net. Hier hilft es dann im Terminal:

open -n /Applications/MonoDevelop.app

ein­zu­ge­ben. Damit wird das Sys­tem gezwun­gen eine neue Instanz von Mono­De­ve­lop anzu­le­gen. Eine andere Methode wäre es eine Kopie von Mono­De­ve­lop anzu­le­gen und diese z.B. „Mono­De­ve­lop 2″ zu nen­nen, was aber in mei­nen Augen kei­nen Sinn macht, da es auf eine Ver­schwen­dung von Spei­cher­platz hinausläuft.

Vor eini­ger Zeit hatte ich einen Arti­kel dar­über geschrie­ben, was mich an Mono­De­ve­lop stört. Seit heute gibt es da noch eine wei­tere Sache. So kann man in Mono­De­ve­lop Aus­drü­cke und Varia­blen aus­wer­ten, was bei der Ent­wick­lung doch sehr prak­tisch ist.

Das Fenster zum Überwachen von Ausdrücken und Variablen

Das Fens­ter zum Über­wa­chen von Aus­drü­cken und Variablen

Pro­ble­ma­tisch wird es dann, wenn das Fens­ter dazu ver­lei­tet nach Feh­lern zu suchen, die eigent­lich nicht exis­tent sind. So kürzt es auto­ma­tisch den Wert der über­wach­ten Varia­ble ein. Selbst wenn man auf „Kopie­ren“ drückt, wird nur die gekürzte Fas­sung in die Zwi­schen­ab­lage gescho­ben. Dadurch kann es dann pas­sie­ren das man anstatt:

"ABCDEFGHIJKLMNOPQRSTUVWXYZ"

den Wert:

"ABCDEFGHIJKLMNOPQRS..."

aus­wer­tet. Möchte man an die­ser Stelle ganz sicher sein, so hilft nur der umständ­li­che Weg über die Lupe, in wel­cher der ganze Wert in einem extra Fens­ter ange­zeigt wird.

Unter Mac OS X schreibt man ein Back­slash mit­tels der Tas­ten „Umschalt + Alt + 7″. Dies funk­tio­niert auch über­all, nur bei Mono­De­ve­lop gibt es dort einige Pro­bleme. Mono­De­ve­lop hält das ganze für einen Short­cut, was dazu führt das es die ent­spre­chende Funk­tion aus­führt. Nur von dem Back­slash ist nichts zu sehen.

Die Einstellung der Tastebindungen

Die Ein­stel­lung der Tastenbindungen

Um dies zu ändern geht man in den Ein­stel­lun­gen und auf den Punkt „Tas­ten­bin­dun­gen“ und sucht dort nach „dyna“. Damit wird die ent­spre­chend belegte Taste gefun­den, wel­che nun umbe­legt wer­den kann. Anschlie­ßend funk­tio­niert auch das Back­slash in Mono­De­ve­lop wieder.

Wei­tere Infor­ma­tio­nen gibt es unter:
https://bugzilla.xamarin.com/show_bug.cgi?id=6527

Bei einem C# Pro­jekt von mir, wel­ches ich in Visual Stu­dio und Mono­De­ve­lop bear­beite, gab es einige Pro­bleme mit dem debug­gen. Unter Mono­De­ve­lop reichte es die Haupt­klasse anzu­ge­ben, so das er in diese sprin­gen konnte.

Bei Visual Stu­dio fruch­tete dies lei­der nicht. Dort stellt sich die Frage ob es even­tu­ell eine Inkom­pa­ti­bi­li­tät zwi­schen den Pro­jekt­da­teien gibt. Hier ist wohl wei­tere For­schung nötig.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://de.wikipedia.org/wiki/MonoDevelop
http://de.wikipedia.org/wiki/Visual_Studio

Mono­De­ve­lop an sich ist eine schöne Ent­wick­lungs­um­ge­bung für das Schrei­ben von Mono Anwen­dun­gen. Aller­dings sind mir im Laufe der letz­ten Tage einige unschöne Dinge an Mono­De­ve­lop auf­ge­fal­len, wel­che dem Ent­wick­ler doch ziem­lich nerven:

  • Mono star­tet augen­schein­lich nie maximiert
  • die Optio­nen kön­nen nicht impor­tiert und expor­tiert werden
  • der letzte View wird sich nicht gemerkt, beim Start wird immer der Default View benutzt
  • die Code­for­ma­tie­rung akti­viert sich nicht nach dem schlie­ßen einer geschweif­ten Klammer
  • Dateien kön­nen von Pro­jekt zur Pro­jekt ver­scho­ben wer­den, aber nicht in andere Ordner
  • es gibt kein Sym­bol zum Aus- und Ein­kom­men­tie­ren in der Toolbar
  • keine Blo­cke­di­tier­funk­tion (ver­ti­ka­les Editieren)
  • keine Option vor­han­den um alle #region Objekte auf ein­mal zu schließen
  • anschei­nend merkt sich Mono­De­ve­lop nicht ob eine Region geschlos­sen oder geöff­net war

An sich sind es viele Klei­nig­kei­ten, die einen aller­dings mit der Zeit doch ziem­lich behin­dern und ner­ven. Dort sollte nach­ge­bes­sert wer­den, damit die Ent­wick­lung mit Mono­De­ve­lop mehr Spaß macht und pro­duk­ti­ver wird :)

Wei­tere Infor­ma­tio­nen gibt es unter:
http://de.wikipedia.org/wiki/MonoDevelop
http://wiki.ubuntuusers.de/entwicklungsumgebungen

Wer auf der Suche nach der neus­ten Ver­sion von Mono­De­ve­lop (2.8) ist und diese unter Ubuntu benö­tigt der sollte sich das PPA „ppa:keks9n/monodevelop-latest“ anschauen. Mittels

sudo add-apt-repository ppa:keks9n/monodevelop-latest
sudo apt-get update && sudo apt-get dist-upgrade

kann man das ganze im Ter­mi­nal aktualisieren.

Danach wird man von der Ver­sion 2.8.2 begrüßt :)

Wei­tere Infor­ma­tio­nen gibt es unter:
http://de.wikipedia.org/wiki/MonoDevelop
https://launchpad.net/~keks9n/+archive/monodevelop-latest

Wenn man in Mono­De­ve­lop eine GTK# Anwen­dung schreibt und sie zwingt auf „jeder CPU“ zu lau­fen so wird diese Anwen­dung beim Start abstürz­ten. Meist sieht das dann so aus:

Unbehandelte Ausnahme: System.TypeInitializationException: 
Der Typeninitialisierer für "Gtk.Application" hat eine Ausnahme verursacht. 
System.BadImageFormatException: Es wurde versucht, eine Datei mit einem falschen Format zu laden.
(Ausnahme von HRESULT: 0x8007000B)

 bei GLib.Thread.glibsharp_g_thread_supported()
 bei GLib.Thread.get_Supported()
 bei Gtk.Application..cctor()
 
--- Ende der internen Ausnahmestapelüberwachung ---
 bei Gtk.Application.Init()
 bei testapp.MainClass.Main(String[] args) in d:\testapp\Main.cs:Zeile 10.

Das Pro­blem ist wohl das es noch keine x64 GTK# Biblio­thek für Win­dows gibt. Aus die­sem Grund sollte man seine Assem­blys auf x86 stel­len, dann klappt es auch mit Win­dows 7.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://mono.1490590.n4.nabble.com/windows-7-x64-and-gtk-app-td1516626.html

Bei dem kom­pi­lie­ren eines Mono Pro­jek­tes unter Mono­De­ve­lop auf einem Kubuntu Sys­tem kam es zu fol­gen­der Fehlermeldung:

Could not obtain a C# compiler. C#-Compiler für Mono / .NET 2.0 nicht gefunden.

Das Pro­blem ent­steht dadurch das Mono ver­schie­dene Com­pi­ler kennt, jeweils für die 1.1er, die 2.0er, die 2.1er und die 4.0er Lauf­zeit­um­ge­bung. Die Lösung ist eine ein­fa­che Nach­in­stal­la­tion der betref­fen­den Com­pi­ler mittels:

sudo apt-get install mono-mcs mono-gmcs mono-dmcs

Danach soll­ten die Pro­jekte wie­der ohne Pro­bleme kompilieren.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://www.mono-project.com/CSharp_Compiler

Ich ent­wickle seit einer Weile auch mit Mono­De­ve­lop und wünschte mir eine inte­grierte Ver­si­ons­kon­trolle für meine Pro­jekte. Also schaute ich mal im Netz nach und siehe, da das ganze ist bereits ein­ge­baut. Aller­dings funk­tio­nierte es unter Kubuntu 10.10 nicht. Ich fand die betref­fen­den Menü­punkte nicht. Des Rät­sels Lösung war das mir ein Paket fehlte. Nach der Instal­la­tion des Pake­tes monodevelop-versioncontrol lief das ganze dann. Dane­ben habe ich auch gleich noch das Paket monodevelop-debugger-mdb installiert.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://monodevelop.com/
http://de.wikipedia.org/wiki/MonoDevelop