2015-10-17 14 views
6

Ho lavorato a un progetto .NET 3.5 C# utilizzando Visual Studio Community 2015, ma avevo sempre avuto intenzione di fare la maggior parte dello sviluppo su Linux (Ubuntu Gnome 15.04) usando Mono e MonoDevelop.Versione precedente di .Net non installata con l'ultimo Mono?

Sto utilizzando l'ultima versione stabile di Mono (4.0.4) e MonoDevelop (5.9.6), che supporta .NET 4.5 e può aprire il file di soluzione creato da VS senza problemi.

Ora sto scrivendo applicazioni C++ su Linux per la parte migliore di un decennio, ma C# e .NET sono completamente nuovi per me. Quindi io ho assunto che se avessi installato una versione Mono che supporta .NET 4.5, avrei ottenuto anche .NET 3.5 perché la versione successiva è un superset del vecchio - molto simile a un compilatore C++ 14 supporta C++ 03 .

Tuttavia questo non sembra essere il caso, come MonoDevelop stati (sotto l'opzione di destinazione quadro per ogni progetto):

  • .NET Framework 4.5.1
  • Mono/.NET 4.5
  • Mono/.NET 3.5 (non installato)

Quindi devo installare la versione precedente di un parallelo Mono al fine di ottenere il supporto .NET 3.5, o sono solo causa di un problema di configurazione?

risposta

5

Nessun problema di configurazione, Mono ha abbandonato il supporto per i vecchi framework nella versione 4.x. Se è necessario compilare contro i 3,5 assiemi, quindi sì, sarà necessaria un'installazione parallela.

Dropped Support for Old Frameworks

assembly di riferimento

Costruiamo più le assemblee di riferimento per .NET 2.0, .NET 3.5 o NET 4.0 API, ora i binari delle navi delle assemblee di riferimento (Contratti API, senza alcun codice eseguibile effettivo in essi).

Mono ora costruirà solo gli assembly .NET 4.5 e i profili basati su mobile .

Nota: È comunque possibile eseguire assembly compilati per prima .NET Profili su Mono, non c'è alcuna necessità di ricompilare loro (faranno solo corrono sulle .NET 4.5 assemblee invece).

+0

Ugh, che dolore. Grazie per la risposta però. – cmannett85

+0

Solo una nota minore, dovrebbe essere la comunità Mono :) Xamarin! = Mono. –

+2

Ho scritto un tutorial qui: http://blog.rubenwardy.com/2016/07/20/rimworld-install-monodevelop-with-dot-net-3.5/ Ho trovato abbastanza difficile capire come installare un versione precedente di Mono e MonoDevelop che supportava 3.5, quindi ho creato un post sul blog. Spero che questo aiuti qualcuno – rubenwardy

3

Ho avuto un problema simile (progetto con targeting per .NET 4.0, ma ora solo 4.5 è disponibile tramite mono). La mia soluzione era quella di creare un link simbolico per 4.0:

Sulla mia macchina Fedora 32 questo è stato fatto da

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

Questo dovrebbe funzionare perché c'è un (almost) nessuna modifica rottura tra .NET 4 e 4.5 - YMMV

2

Finalmente, ho funzionato. Sto usando Visual Studio per Mac - https://www.visualstudio.com/vs/visual-studio-mac/

In Preferenze-> Progetti->.Net Runtimes è possibile modificare il .Net Runtime predefinito. Il valore predefinito è Mono 4.8.0.

Questo si trova qui su un Mac: /Library/Frameworks/Mono.framework/Versions/4.8.0

Da qui è possibile scaricare le versioni precedenti di Mono https://download.mono-project.com/archive/

ho scaricato da 3.12.1 https://download.mono-project.com/archive/3.12.1/macos-10-x86/ e copiato nella cartella /Library/Framework/Mono.framework/Versions/.

All'interno di VisualStudio è quindi possibile aggiungere il framework .net e impostarlo come predefinito. Il mio progetto è quindi stato compilato.

+1

Non è necessario impostarlo come predefinito. Puoi semplicemente scegliere Project-> Active Runtime -> Mono 3.12 e quindi compilare – PandaWood

+0

Grazie, buono a sapersi. – Emile