2015-10-17 10 views
6

Ich habe an einem .NET 3.5 C# -Projekt mit Visual Studio Community 2015 gearbeitet, aber ich hatte immer vorgehabt, die meiste Entwicklung unter Linux (Ubuntu Gnome 15.04) mit Mono und MonoDevelop zu machen.Ältere Version von .Net nicht mit dem neuesten Mono installiert?

Ich verwende die neueste stabile Mono-Version (4.0.4) und MonoDevelop (5.9.6), die .NET 4.5 unterstützt und die VS erstellte Lösungsdatei ohne Probleme öffnen kann.

Jetzt schreibe ich C++ - Anwendungen unter Linux seit fast einem Jahrzehnt, aber C# und .NET sind völlig neu für mich. Also ich angenommen, dass, wenn ich eine Mono-Version installiert, die .NET 4.5 unterstützt, würde ich .NET 3.5 auch erhalten, weil die spätere Version eine Obermenge der älteren ist - ähnlich wie ein C++ 14 Compiler C++ 03 unterstützt .

aber dies scheint nicht der Fall zu sein, wie MonoDevelop Staaten (unter dem Target Framework Option für jedes Projekt):

  • .NET Framework 4.5.1
  • Mono/.NET 4.5
  • Mono/.NET 3.5 (Nicht installiert)

So habe ich eine parallele ältere Version von Mono zu installieren, um .NET 3.5 Unterstützung zu erhalten, oder bin ich ein Konfigurationsproblem leiden gerade?

Antwort

5

Kein Konfigurationsproblem, Mono hat die Unterstützung der älteren Frameworks in der Version 4.x eingestellt. Wenn Sie kompilieren müssen gegen die 3.5 Baugruppen, dann ja, Sie benötigen eine parallele Installation.

Dropped Support for Old Frameworks

Reference Assemblies

Wir haben nicht mehr die Referenz Baugruppen für die 2.0, .NET 3.5 oder .NET 4.0 APIs .NET bauen wir jetzt Schiff Binärdateien der Referenz Baugruppen (API-Verträge, in denen kein ausführbarer Code enthalten ist.

Mono erstellt jetzt nur die .NET 4.5-Assemblies sowie die mobilen Profile.

Hinweis: Sie noch Baugruppen für frühere kompiliert ausführen können .NET-Profile auf Mono, gibt es keine Notwendigkeit, sie neu kompiliert werden (sie werden nur auf den stattdessen .NET 4.5 Baugruppen laufen).

+0

Ugh, was für ein Schmerz. Danke für die Antwort. – cmannett85

+0

Nur eine kleine Anmerkung, sollte die Mono-Community sein :) Xamarin! = Mono. –

+2

Ich schrieb ein Tutorial hier: http://blog.rubenwardy.com/2016/07/20/rimworld-install-monodevelop-with-dot-net-3.5/ Ich fand es ziemlich schwer herauszufinden, wie man ein installiert ältere Version von Mono und MonoDevelop, die 3,5 unterstützt, so habe ich einen Blog-Post gemacht. Hoffe, das hilft jemandem – rubenwardy

3

Ich hatte ein ähnliches Problem (Projekt Targeting .NET 4.0, aber jetzt nur 4.5 ist über mono verfügbar). Meine Abhilfe war ein Symlink für 4.0 zu erstellen:

Auf meinem Fedora 32 Maschine dies durch

cd /usr/lib/mono 
sudo ln -s 4.5 4.0 

Dies soll geschehen, weil die Arbeit dort ein (almost) keine Bruch Änderungen zwischen .NET 4 und 4.5 - YMMV

2

Endlich, es funktioniert. Ich verwende Visual Studio für Mac - https://www.visualstudio.com/vs/visual-studio-mac/

Unter Einstellungen-> Projekte->.Net Runtimes können Sie die Default .Net Runtime ändern. Es ist standardmäßig Mono 4.8.0.

Dies wird hier auf einem Mac zu finden: /Library/Frameworks/Mono.framework/Versions/4.8.0

Hier können Sie Mono ältere Versionen von https://download.mono-project.com/archive/

herunterladen können heruntergeladen I 3.12.1 aus https://download.mono-project.com/archive/3.12.1/macos-10-x86/ und in den Ordner /Library/Frameworks/Mono.framework/Versions/ kopiert.

In VisualStudio können Sie dann das .NET-Framework hinzufügen und als Standard festlegen. Mein Projekt wurde dann kompiliert.

+1

Sie müssen es nicht als Standard festlegen. Sie können einfach Project-> Active Runtime -> Mono 3.12 und dann kompilieren – PandaWood

+0

Danke, gut zu wissen. – Emile

Verwandte Themen