Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 旧版本的.Net没有安装最新的Mono?_C#_.net_Visual Studio_Mono_Monodevelop - Fatal编程技术网

C# 旧版本的.Net没有安装最新的Mono?

C# 旧版本的.Net没有安装最新的Mono?,c#,.net,visual-studio,mono,monodevelop,C#,.net,Visual Studio,Mono,Monodevelop,我一直在使用Visual Studio Community 2015进行.NET 3.5 C#项目,但我一直打算使用Mono和MonoDevelop在Linux(Ubuntu Gnome 15.04)上进行大部分开发 我正在运行最新的稳定的Mono版本(4.0.4)和MonoDevelop(5.9.6),它支持.NET 4.5,可以毫无问题地打开VS创建的解决方案文件 现在我已经在Linux上编写C++应用程序了十年的最长时间,但是C和.NET对我来说是全新的。所以我假设如果我安装了一个支持.N

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

我正在运行最新的稳定的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一样

然而,情况似乎并非如此,因为MonoDeveloper表示(在每个项目的目标框架选项下):

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

那么,为了获得.NET 3.5的支持,我必须安装一个并行的旧版本Mono,还是我只是遇到了配置问题?

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

参考组件

我们不再为.NET 2.0、.NET 3.5构建引用程序集 或者.NET4.0API,我们现在提供引用程序集的二进制文件 (API合同,其中没有任何实际的可执行代码)

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

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

我也遇到过类似的问题(ProjectTargeting.NET4.0,但现在只有4.5可以通过
mono
获得)。我的解决方法是为4.0创建一个符号链接:

在我的Fedora 32机器上,这是由

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

这应该是可行的,因为在.NET4和4.5之间没有任何突破性的变化-YMMV最后,它开始工作了。我正在使用Visual Studio for Mac-

在Preferences->Projects->.Net运行时下,您可以更改默认的.Net运行时。它默认为Mono 4.8.0

它位于mac上:/Library/Frameworks/Mono.framework/Versions/4.8.0

从这里您可以下载旧版本的Mono

我从网站下载了3.12.1 并将其复制到/Library/Frameworks/Mono.framework/Versions/文件夹中


然后,您可以在VisualStudio中添加.net framework并将其设置为默认值。然后我的项目被编译

啊,好痛啊。谢谢你的回答。只有一个小提示,应该是Mono社区:)Xamarin!=我在这里写了一篇教程:我发现如何安装支持3.5的旧版本的Mono和MonoDevelop非常困难,所以我写了一篇博文。希望这有帮助someone@rubenwardy有趣的是,我恰好为RimWorld Linux开发人员做了这件事,就像你的博客所提到的那样,但要让它工作起来需要花多少钱,真是可笑。来自Java dev,在Java dev中,使用较旧的JDK进行构建是一件琐碎而例行的事情,这对.NET开发人员来说是一个非常糟糕的问候。不幸的是,我猜由于Linux版本的差异,在我的PC上,它不像下面列出的步骤那样简单。更“棒”的是,我认为我将失去构建Kerbal mods的能力,我认为这依赖于更高版本/您不必将其设置为默认值。你可以选择Project->Active Runtime->Mono 3.12,然后编译Ubuntu 17.10,我可以
sudo-apt-install-Mono-reference-assemblies-3.5
。找到了。