如何在Linux下运行C#项目

如何在Linux下运行C#项目,c#,.net,linux,C#,.net,Linux,你知道在Linux下运行C#项目的方法吗。是否有用于此的框架工作或库?您正在寻找.NET Framework和CLR的跨平台(但主要针对Linux)实现。它能够运行为CLR(MS.NET)编译的二进制文件,或者创建自己的本地Linux二进制文件 该项目已经运行了一段时间,它的当前版本(2.4)非常有用,即使是对用户来说也是如此。有关当前和未来版本的主要功能和里程碑的详细信息,请参见 有关当前状态的详细信息: 除了一些.NET3.0/3.5的东西,如WPF(目前支持最少)和WCF(几乎不存在支持)

你知道在Linux下运行C#项目的方法吗。是否有用于此的框架工作或库?

您正在寻找.NET Framework和CLR的跨平台(但主要针对Linux)实现。它能够运行为CLR(MS.NET)编译的二进制文件,或者创建自己的本地Linux二进制文件

该项目已经运行了一段时间,它的当前版本(2.4)非常有用,即使是对用户来说也是如此。有关当前和未来版本的主要功能和里程碑的详细信息,请参见

有关当前状态的详细信息:

除了一些.NET3.0/3.5的东西,如WPF(目前支持最少)和WCF(几乎不存在支持),大部分BCL(基类库)都可以在Mono上使用。然而,Silverlight 2.0正通过该项目得到支持,并且进展顺利。然而,据我所知,WinForms功能(使用GTK作为后端)是相当完整的


C#3.0语言的实现实际上已经完成,包括C#3.0特性,如lambda表达式、LINQ和自动属性。我认为,虽然在某些方面还不能与MS编译器媲美,但它的效率至少可以与MS编译器媲美,这一点已经成熟。Mono C#编译器非常酷(也很独特)的地方在于它现在提供了一个编译器服务——换句话说,是从代码中进行真正的动态编译(不使用CodeDOM)。微软可能只会在.NET 5.0中添加这一功能。

正如其他人所说,您可以在Mono上运行.NET应用程序。如果您的应用程序使用平台调用(P/Invoke)来调用本机代码,那么如果没有本机库的Mono实现,您可能会遇到一些问题。要检查您的应用程序是否做到这一点(或使用尚未在Mono中实现的API),您可以使用。

对于遇到此问题的人,2016年后可以使用-一个由Microsoft和GitHub上的.NET社区维护的开源通用开发平台。它是跨平台的(支持Windows、macOS和Linux),可用于构建设备、云和物联网应用程序。

@Dror:你的意思是什么?在某些方面,Mono比MS编译器更快。我听说一些即将推出的(如果不是最新的)版本会自动矢量化代码,即使原始代码不使用Mono.Simd。@supercheetah:我自己还没有遇到过。:)(虽然我相信你在这个奇怪的例子中是对的。)显然v2.4中有一些真正的性能改进,但是我不确定我是否用它进行了测试。