Probleme mit CSharpDevelop

Sherlock Holmes

Grünschnabel
Hallo Leute,

als jahrelanger MFC-Entwickler hab' ich mich jetzt mal schweren Herzens entschlossen, einen Blick auf C# zu werfen. Installiert habe ich mir unter Windows 2000, SP2 folgendes: CSharpDevelop, die .NET Redistributable 1.1 deutsch, das .NET Framework SDK 1.1 deutsch und zusätzlich noch die aktuelle MONO-Version 0.25. So weit, so gut. Einige der Beispielprogramme des SDK's lassen sich unter Verwendung des Microsoft CSC problemlos übersetzen und ausführen, jedoch insbesondere bei Verwendung von GDI+ stürzt das Programm direkt beim Aufruf ab. Hab' ich da noch etwas vergessen zu installieren? Meine zweite Frage bezieht sich auf MONO (http://www.go-mono.org). Hat da schon jemand Erfahrung, wie man grafische Anwendungen (mit z.B. Gtk#) unter Verwendung von CSharpDevelop erstellt? Diese Programme sollen ja wohl unter Windows und Linux lauffähig sein? Ich habe cygwin installiert, bei den Projektoptionen in CSharpDevelop Mono und Mono mcs ausgewählt, beim Anklicken des Compilierbuttons geschieht jedoch nichts. Wäre echt nett, wenn mir jemand weiterhelfen könnte...
 

Alexander Schuc

crazy-weasel
Hallo,

jedoch insbesondere bei Verwendung von GDI+ stürzt das Programm direkt beim Aufruf ab.

Stürzt es einfach ab, oder kommt auch eine Fehlermeldung? Fehlen sollte nichts, da würdest du schon eine Meldung kommen das eine bestimmte dll nicht geladen werden konnte.

Hat da schon jemand Erfahrung, wie man grafische Anwendungen (mit z.B. Gtk#) unter Verwendung von CSharpDevelop erstellt?
Ja, ein wenig. Arbeite gerade damit unter Linux.
Ein gtk# Programm unter Windows habe ich allerdings noch nicht zum laufen gebracht.

Wenn du ein GTK# Programm erstellen willst, reichts es nicht ein WinForms Programm mit mcs zu kompilieren, deine Posting klingt so als hättest du nur das getan.

Ein guter Link ist http://go-mono.com/tutorial/html/en/index.html.
Dort findest ziemlich weit unten etwas zu GTK#.

Mfg,
Alex
(crazy-wease)

p.s.
Bitte verfasse deine Beiträge etwas leserlicher, mit Absätzen und solchen Sachen.
 

Sherlock Holmes

Grünschnabel
Hallo Alexander,

erst mal Danke für die Antwort. Bezüglich Absätze:
Ich gelobe Besserung ;)

Also, ich habe z.B. ein Programm bei http://www.codeproject.com
downgeloadet, fractalTree.

Beim Kompilieren ist noch alles okay, dann starte ich dass Programm und folgende Meldung erscheint:

---

fractalTree.exe - Common Language Runtime Debugging Services

Application has generated an exception that could not be handled.

Process id=0x348(840) , Thread id=0x5cc(1484)

Click OK to terminate...

---

Danach folgt eine Meldung:

A fatal problem has occured.
Object reference not set to an instance of an object.
in:System.NullReferenceException

Dies taucht aber tatsächlich nur bei Programmen auf, die mit DirectX oder GDI+ arbeiten.

Wegen Gtk# werd ich mich mal schlau machen. Ich suche halt 'ne Möglichkeit, plattformunabhängig zu programmieren - meine zwei Techniken der Wahl sind zur Zeit wxWindows (http://www.wxwindows.org) da ich noch viele alte MFC-Programme habe und ansonsten MONO.

Gruß,

Joerg
 

Alexander Schuc

crazy-weasel
Hallo.

Ich habe mir mal den Source dieses Programmes gezogen, neu kompiliert (mit VS.net, und auch testweise mit #Develop).

Kompilieren funktionierte in beiden Anwendungen, allerdings konnte ich von #Develop heraus das Programm nicht starten.
Die mit #Develop kompilierte 'Version', lies sich aber normal im Explorer starten.
Dies dürfte noch ein Bug von #Develop sein.
Also, starte die Programme einfach aus dem Explorer heraus.

Wegen plattforum unabhängigem Programmieren, du könntest auch auf java zurückgreifen. Ist komplett Plattform unabhängig, auch die GUI.
Bei C# wird es auch irgendwann in der Zukunft soweit sein, das selbst WinForms unter Linux laufen werden. Bis das .net Framework allerdings komplett für mehrere Plattformen vorliegen wird, dauert es halt noch.

Mfg,
Alex
 

Sherlock Holmes

Grünschnabel
Hallo,

habe das eben mal ausprobiert. Hat aber nix genutzt :(

Das Programm stürzt nach wie vor beim Start ab, auch wenn man es direkt aus dem Explorer startet.

Sollte ich vielleicht mal die englische Version des Framework SDK und die passende Redistributable verwenden?

Welche benutzt Du denn, die 1.1 oder die ältere?

Gruß,

Jörg
 

Alexander Schuc

crazy-weasel
Interessant,
die Sprachversion des .net Frameworks sollte egal sein.
Ich habe beide Versionen nebeneinander installiert.

Habe jetzt mal getestet, ob es mit v1.0 oder v1.1 nicht funktioniert. Hat aber bei mir mit jeder Version tadelos gestartet.

(Welche Version des .net Frameworks benutzt werden soll, habe ich in der app.config [bzw. fractalTree.exe.config] angegeben)

Welche Version hast du installiert? (SDK & Redistributable)

// Alex
 

Alexander Schuc

crazy-weasel
So, muss mich kurz mal entschuldigen.
Hab mich vertan. #Develop packt die compilierte Datei in einen anderen Ordner als VS.net, habe also immer mit der von VS erzeugten Datei getestet.

Die von #Develop erzeugte Datei konnte auch ich nicht starten. Da ich mich wunderte warum #Develop nicht 'richtig' kompilieren kann, hab ich mal probiert in einer Konsole das Programm selbst zu kompilieren, und zu starten.
Das kompilieren gelang mir, das Ausführen jedoch nicht.

Jetzt habe ich mir die Zeile, die den Fehler verursacht nochmals genauer angesehen, und merkte etwas. In einer Zeile zuvor wird die Datei 'mainForm.txt' geladen. Welche sich aber nur im Verzeichniss /bin/Debug befindet.
Kopier diese Datei ins Ausgabeverzeichniss von #Develop und es wird funktionieren.

Ach, die fractalTree.exe.config habe ich von Hand geschrieben, sie ist zum Ausführen nicht notwendig. Wollte nur Testen welches der 2 Frameworks benötigt wird.
Das Problem scheint nun aber ja gelöst zu sein.

Mfg,
Alex
 

Sherlock Holmes

Grünschnabel
Hab's eben ausprobiert und es funktioniert!

Vielen Dank für den Tip! Das scheint aber dann doch ein Bug in #Develop zu sein, oder? Werde jetzt erst mal noch weitere Erfahrungen sammeln ;)


Gruß,

Jörg
 

Alexander Schuc

crazy-weasel
Bitte gerne.
Denke nicht das dies ein Bug von #Develop ist, eher in kleiner Fehler des Erstellers dieses Projekts.
Er hätte diese Datei mit ins Projekt geben können, und als Content markieren. Dann müsste sie immer ins Output-Verzeichniss kopiert werden.
Er hat sie aber anscheinden schon dort im Debug Ordner erstellt, und #Develop hat dort nicht nach ihr gesucht. Warum auch.

Hauptsache wir wissen woran es lag.
Viel Spass noch mit C#.

Mfg,
Alexander