Jump to content
Unity Insider Forum

Mono, .Net Core, .Net 2.0, Net 4.x, C# 8


Lightstorm

Recommended Posts

Bin ich der einzige den das auch so verwirrt?

Also Unity benutzt Mono, richtig? Nicht .net Core oder .Net von Microsoft.

Ist dass das originale Mono oder irgendeine modifiziertes Mono für Unity? Also ein Art "Unity Mono"?

Und Mono bzw. Unity ist kompatible zu .Net 2.0 und .Net 4 Standard von Microsoft?

Ist .Net 4 nicht eine höhere Version als Net. 2.0? Oder werden beide Stränge für sich alleine weiter entwickelt?

Die neuen Features von C# 8 werden laut Microsoft Webseite von .Net 2.1 unterstützt. Was bei mir wieder für Verwirrung sorgt weil ich intuitiv meinen könnte das doch .Net 4 die aktuelle Version ist und Neuerungen darauf aufbauen und nicht auf älteren Versionen.

Hinzu kommt das Visual Studio 2019 C# 8 Features unterstützt und sie erfolgreich validiert aber der Unity Editor spuckt nach dem compilieren Fehler aus. z.B. nimmt der VS 2019 eine Switch Expression (C# 8 Feature) an, mit annehmen meine ich dass nichts rot unterstrichen ist. Aber der Unity Editor gibt Fehler an der Stelle an.

Laut Unity Forum ist eine Unterstützung für C# 8 für 2020 geplant. Macht wohl Sinn. Unity unterstützt den .Net 2.0 Standard. C# 8 Features setzen aber .Net 2.1 Standard voraus.

 

Kann jemand diese Verwirrung bisschen auflösen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wahrscheinlich

Mono selbst ist nichts anders um die Möglichkeit zu geben Plattform unabhängig zu programmieren, das mit C#. Ein Beispiel, ich habe ein Server programmiert, welches mit C# geschrieben wurde und welches sogar einen .exe beinhaltet. Das Programm läuft sowohl in Linux aber auch im Windows. Mittlerweile kann man sogar die Datei direkt starten. Früher musste ich noch mono zusätzlich ausführen. Früher war mono nicht für Systeme gedacht. Eigentlich nur windows.
Kurz: Mono hilft die diese Programme die programmiert wurde auszuführen, zu compilen (ja auch in Linux kann man sie compilen und ausführen).

Net Standard definiert, welche Libraries in der Programmierung benutzt werden können. Beispiel Netstandard 2 die framework 4.6.1 und die netstanard 1 wäre framework 4.5. Da sind auch aber andere Pakete dabei. Nicht nur Framework. Z.B. Core.

Net Framework waren nicht beabsichtigt auf anderen Projekten zu funktionieren. Durch Xamarin und Mono wurde was neues erschaffen, wo man dann für anderen Plattformen erweitern konnte.

Net Core benutzt KEIN mono. Wurde bewusst so vom Libraries aufgebaut, dass man auch für andere Plattformen verwenden kann. Ich habe jetzt nicht selbst benutzt, aber ich vermute mal, dass da sowas gibt wie if application is linux then usw. So wie ich auch verstanden habe hat Core auch keine libraries für Interfaces. Sprich kein Fenster wo man navigieren kann (Windows forms, WPF usw).

Am 5.12.2019 um 16:04 schrieb Lightstorm:

Ist dass das originale Mono oder irgendeine modifiziertes Mono für Unity? Also ein Art "Unity Mono"?

Es ist der originale Mono zu mindest in der API Bereich. Zu modifizieren und zu ändern wäre nicht gut, dann müssten wir auch die Libraries dafür runterladen. Z.B. müsste ich irgendwas zusätzlich auf meinem Linux installieren, damit auch Unitys Version funktionieren soll. Aber der Standard Mono läuft.

Am 5.12.2019 um 16:04 schrieb Lightstorm:

Und Mono bzw. Unity ist kompatible zu .Net 2.0 und .Net 4 Standard von Microsoft?

Unity ist ein Editor. Unity benutzt mono vom Microsoft. Natürlich!

Am 5.12.2019 um 16:04 schrieb Lightstorm:

Ist .Net 4 nicht eine höhere Version als Net. 2.0? Oder werden beide Stränge für sich alleine weiter entwickelt?

Man kann derzeit zwischen net 2.0 standard under net 4.x auswählen. Das sind eigentlich keine Versionen sondern Paketzustellungen. Früher konnte man auch Net 3.5 auswählen. Wichtig ist hier zu unterscheiden, dass wenn dahinter standard steht, dass es nicht das gleiche ist wie, ohne Standard. Standard heißt, dass da bis zu bestimmte libraries, versionen usw enthalten sind. beispiel Framework, Core, Mono usw.
Die Schreibweise ist um das zu erkennen ist:

Zitat

netstandard2.0

Zusammenstellung für 4.x
net40
net403
net45
net451
net452
net46
net461
net462
net47
net471
net472
net48

Net 4.x bedeutet, dass höchst mögliche soll erlaubt werden beim Programmieren. z.B. .Net Framework 4.7.2 usw. Unity Editor natürlich muss das unterstützen. Sonst geht es nicht.

Am 5.12.2019 um 16:04 schrieb Lightstorm:

Die neuen Features von C# 8 werden laut Microsoft Webseite von .Net 2.1 unterstützt. Was bei mir wieder für Verwirrung sorgt weil ich intuitiv meinen könnte das doch .Net 4 die aktuelle Version ist und Neuerungen darauf aufbauen und nicht auf älteren Versionen.

Siehe oben

Am 5.12.2019 um 16:04 schrieb Lightstorm:

Hinzu kommt das Visual Studio 2019 C# 8 Features unterstützt und sie erfolgreich validiert aber der Unity Editor spuckt nach dem compilieren Fehler aus. z.B. nimmt der VS 2019 eine Switch Expression (C# 8 Feature) an, mit annehmen meine ich dass nichts rot unterstrichen ist. Aber der Unity Editor gibt Fehler an der Stelle an.

Unity hat ist noch nicht bei der Framework Version. Deswegen geht es noch nicht.

Am 5.12.2019 um 16:04 schrieb Lightstorm:

Laut Unity Forum ist eine Unterstützung für C# 8 für 2020 geplant. Macht wohl Sinn. Unity unterstützt den .Net 2.0 Standard. C# 8 Features setzen aber .Net 2.1 Standard voraus

Ich glaube standard 2.1 wird das nicht werden. Wird eher immer noch net 4.x sein, da wie ich oben schrieb standard auch viele Sachen hat die wir aber nicht in Unity brauchen. Net 4.x sollte nur die Framework Version sein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...