web-dev-qa-db-ja.com

古いバージョンの.Netが最新のMonoとともにインストールされていませんか?

Visual Studio Community2015を使用して.NET3.5 C#プロジェクトに取り組んできましたが、MonoとMonoDevelopを使用してLinux(Ubuntu Gnome 15.04)で開発のほとんどを行うことを常に意図していました。

最新の安定したMonoリリース(4.0.4)とMonoDevelop(5.9.6)を実行しています。これは、.NET 4.5をサポートし、VSで作成されたソリューションファイルを問題なく開くことができます。

今、私は10年の大部分の間Linux上でC++アプリを書いてきましたが、C#と.NETは私にとってまったく新しいものです。だから私は仮定 .NET 4.5をサポートするMonoバージョンをインストールした場合、新しいバージョンは古いバージョンのスーパーセットであるため、.NET3.5も取得します-C++ 14コンパイラのようにC++ 03をサポートします。

ただし、MonoDevelopが(各プロジェクトのTarget Frameworkオプションの下で)述べているように、これは当てはまらないようです。

  • .NET Framework 4.5.1
  • モノラル/.NET 4.5
  • Mono/.NET 3.5(インストールされていません)

では、.NET 3.5をサポートするには、古いバージョンのMonoを並列にインストールする必要がありますか、それとも構成の問題が発生しているだけですか?

12
cmannett85

構成の問題はありません。Monoは4.xリリースで古いフレームワークのサポートを終了しました。 3.5アセンブリに対してコンパイルする必要がある場合は、はい、並列インストールが必要になります。

古いフレームワークのサポートを終了しました

参照アセンブリ

.NET 2.0、.NET 3.5、または.NET 4.0 APIの参照アセンブリを構築しなくなり、参照アセンブリのバイナリを出荷するようになりました(APIコントラクト、実際の実行可能コードは含まれていません)。

Monoは、.NET4.5アセンブリとモバイルベースのプロファイルのみをビルドするようになりました。

注:Monoで以前の.NETプロファイル用にコンパイルされたアセンブリを引き続き実行できます。再コンパイルする必要はありません(代わりに.NET 4.5アセンブリで実行されます)。

9
SushiHangover

同様の問題が発生しました(.NET 4.0を対象としたプロジェクトですが、現在はmonoから利用できるのは4.5のみです)。私の回避策は、4.0のシンボリックリンクを作成することでした。

私のFedora32マシンでは、これは

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

.NET 4と4.5の間で( ほぼ )重大な変更がないため、これは機能するはずです-YMMV

3
ChriPf

最後に、動作するようになりました。 Visual Studio forMacを使用しています- https://www.visualstudio.com/vs/visual-studio-mac/

[設定]-> [プロジェクト]-> [。Netランタイム]で、既定の.Netランタイムを変更できます。デフォルトはMono4.8.0です。

これはMacのここにあります:/Library/Frameworks/Mono.framework/Versions/4.8.0

ここから、Monoの古いバージョンをダウンロードできます https://download.mono-project.com/archive/

https://download.mono-project.com/archive/3.12.1/macos-10-x86/ から3.12.1をダウンロードし、/ Library/Frameworks /Mono.frameworkにコピーしました。/Versions /フォルダー。

VisualStudio内で、.netフレームワークを追加し、それをデフォルトとして設定できます。その後、私のプロジェクトをコンパイルしました。

2
Emile