20 Stimmen

Bewährte Praktiken für portables C#

Ich bin auf der Suche nach einigen C#-Code für Linux/Windows/Mac/jede andere Plattform zu schreiben, und bin für Best Practices für portablen Code suchen.

Projekt . hat einige großartige Portierung Ressourcen.

Was sind die besten Praktiken für portables C#?

15voto

Martin Salias Punkte 332

Ich hasse den Begriff "Best Practice", weil es scheint, dass einige Praktiken die besten in jedem Kontext sein können, was eine riskante Sache ist, aber ich werde sagen, was ich als "Good Practice" für Multi-Plattform-Code (und für die meisten anderen Arten der Entwicklung):

Verwenden Sie ein System zur kontinuierlichen Integration und ständig für alle Zielplattformen erstellen .

Klingt zu komplex? Nun, wenn Sie wirklich mehrere Plattformen unterstützen müssen, sollten Sie es tun. Egal, wie sorgfältig Sie mit Ihrem Code und der Verwendung von Bibliotheken umgehen, wenn Sie zu spät testen, werden Sie viele Stunden damit verbringen, große Teile der Anwendung zu überarbeiten.

14voto

Orion Edwards Punkte 117361

Ich habe tatsächlich Winforms verwendet und es war in Ordnung. Es war ABER hässlich, aber es hat funktioniert.

Verwenden Sie natürlich nicht P/Invoke oder irgendwelche Win32-Sachen wie die Registry. Achten Sie auch auf die DLLs von Drittanbietern. Wir verwenden zum Beispiel eine SQLite-DLL eines Drittanbieters, die eigentlich nativen Code enthält, den wir auswechseln müssen, wenn wir unter OSX/Linux laufen wollen.

2 Stimmen

Auch die Gendarmerie und das MoMA können helfen.

11voto

Sam Warwick Punkte 2804

Achten Sie auf alles, was mit der Manipulation von Dateinamen und Pfaden zu tun hat, und verwenden Sie die portablen .NET-Methoden in System.IO.Pfad d. h.

anstelle von:

string myfile = somepath + "\\file.txt";

tun:

string myfile = Path.Combine(somepath, "file.txt");

Wenn Sie einen Pfadseparator angeben müssen, verwenden Sie Pfad.Trennzeichen usw.

10voto

Andrei Rînea Punkte 19502

Verwenden Sie nicht " \r\n " für eine neue Zeile. verwenden Umgebung.NewLine

Erinnern Sie sich:

  • *NIX verwendet nur das Newline-Zeichen (" \n ")
  • Windows verwendet " \r\n "
  • MacIntosh verwendet " \r " (Ich bin mir da nicht ganz sicher - Sie können mich gerne korrigieren).

L.E.: Es scheint, dass einige neuere MacOS nicht das " \r Zeilentrennzeichen" nicht mehr.

0 Stimmen

Macintosh USED zu verwenden \r. Heutzutage verwendet sie \n dank der BSD-Basis. Ich weiß nicht genau, wann sich das geändert hat. Es könnte aber immer noch ein Problem sein.

6voto

wvdschel Punkte 11690

Verwenden Sie Windows.Forms nicht für GUIs, aber das hat Mono wahrscheinlich schon erwähnt. Gtk# ist viel konsistenter und zuverlässiger für plattformübergreifende GUIs.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X