最新的Mono不带有旧版的.Net安装吗?

16

我一直在使用Visual Studio Community 2015进行.NET 3.5 C#项目的开发,但我打算在Linux(Ubuntu Gnome 15.04)上使用Mono和MonoDevelop进行大部分开发。

我正在运行最新稳定版的Mono(4.0.4)和MonoDevelop(5.9.6),它支持.NET 4.5并可以无问题地打开由VS创建的解决方案文件。

现在我已经在Linux上编写C++应用程序超过十年了,但C#和.NET对我来说是全新的。因此,我“假设”如果安装了支持.NET 4.5的Mono版本,则同时也会获得.NET 3.5,因为后者是前者的超集 - 就像C++14编译器支持C++03一样。

然而,似乎并非如此,因为MonoDevelop在每个项目的“目标框架”选项中指出:

  • .NET Framework 4.5.1
  • Mono / .NET 4.5
  • Mono / .NET 3.5(未安装)

那么,我必须安装旧版本的Mono才能获得.NET 3.5支持,还是只是遭受配置问题?


1
在Ubuntu 17.10上,我只需要运行sudo apt-get install mono-reference-assemblies-3.5命令即可。这个方法来源于这里 - EagleBeak
3个回答

11

没有配置问题,Mono在4.x版本中放弃支持旧的框架。如果需要针对3.5程序集进行编译,那么是的,您需要进行并行安装。

放弃支持旧框架

参考组件

我们不再构建.NET 2.0、.NET 3.5或.NET 4.0 API的参考组件,现在我们提供了参考组件的二进制文件(API协议,其中不包含任何实际的可执行代码)。

Mono现在仅构建.NET 4.5程序集以及基于移动设备的配置文件。

注意:您仍然可以在Mono上运行为早期.NET配置文件编译的程序集,无需重新编译它们(它们将在.NET 4.5程序集上运行)。


2
唉,真是麻烦。不过还是谢谢你的答案。 - cmannett85
只有一个小细节需要注意,应该是Mono社区 :) Xamarin != Mono. - Lex Li
6
我在这里写了一篇教程:http://blog.rubenwardy.com/2016/07/20/rimworld-install-monodevelop-with-dot-net-3.5/ 我发现安装一个支持3.5的较旧版本Mono和MonoDevelop很难,所以我写了一篇博客文章。希望这能帮助到某些人。 - rubenwardy
1
@rubenwardy 很有趣,我正好在为RimWorld Linux开发做这件事情,就像你的博客所提到的那样,但是让人感到荒谬的是,要让它工作起来需要花费如此之多的时间。从Java开发者的角度来看,使用旧版本JDK进行构建是微不足道和例行公事,这对于.NET开发者来说是一个非常糟糕的问候。不幸的是,我猜测由于Linux版本差异,按照列出的步骤在我的电脑上并不简单。更加“棒极了”的是,我认为我将失去构建Kerbal模组的能力,因为它们依赖于较新的版本。 :/ - Manius
是的,我需要针对框架3.5进行向后兼容,这真是太糟糕了。微软对Mono的管理以及Debian对任何不是在过去6周内发布的东西的厌恶,使得维护旧软件变得越来越困难。 - undefined

3

我遇到了类似的问题(项目针对 .NET 4.0,但现在只能通过 mono 获得 4.5)。我的解决办法是为 4.0 创建一个符号链接:

在我的 Fedora 32 机器上,这是通过以下方法完成的:

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

这应该是可行的,因为.NET 4和4.5之间 (几乎) 没有破坏性变化 - 但结果可能因人而异


2
最后,终于搞定了。我使用的是Visual Studio for Mac - https://www.visualstudio.com/vs/visual-studio-mac/
在“偏好设置”-> “项目”-> “.Net运行时”下,您可以更改默认的.Net运行时版本。它默认为Mono 4.8.0。
在Mac上,它位于此处:/Library/Frameworks/Mono.framework/Versions/4.8.0。
从这里,您可以下载旧版的Monohttps://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框架并将其设置为默认值。我的项目随后编译成功。

1
你不必将其设置为默认选项。你只需要选择项目->活动运行时->Mono 3.12,然后进行编译即可。 - PandaWood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接