您知道在Linux下运行C#项目的任何方法吗?是否有任何框架或库?
答案 0 :(得分:33)
您正在寻找Mono Project - 一个跨平台(但主要针对Linux)的.NET Framework和CLR实现。它能够运行为CLR(MS .NET)编译的二进制文件,或者创建自己的本机Linux二进制文件。
该项目现在已经进行了一段时间,它的当前版本(2.4)非常实用,即使对于production purposes也是如此。有关当前和未来版本的主要功能和里程碑的详细信息,请参阅project roadmap。
有关当前状态的详细信息:
绝大多数BCL(基类库)都可以在Mono上使用,但一些.NET 3.0 / 3.5的东西除外,例如WPF(目前支持最少)和WCF(几乎不存在)支持)。但是,通过Moonlight项目支持Silverlight 2.0,并且进展顺利。据我所知,WinForms功能(使用GTK#作为后端)非常完整。
C#3.0语言的实现已经有效完成,包括C#3.0功能,如 lambda表达式, LINQ 和自动属性。我相信C# compiler已经成熟到它的效率至少与MS编译器的效率相当,尽管在某些方面尚未与之匹配。关于Mono C#编译器的很酷(也很独特)现在提供了一个编译器服务 - 换句话说就是代码中的真正动态编译(不使用CodeDOM)。这可能是MS可能只在.NET 5.0中添加的内容。
答案 1 :(得分:5)
就像其他人已经说过的那样,你可以在Mono上运行.NET应用程序。如果您的应用程序使用平台调用(P / Invoke)来调用本机代码,如果没有本机库的Mono实现,则可能会遇到一些麻烦。要检查您的应用程序是否这样做(或使用尚未在Mono中实现的API),您可以使用Mono Migration Analyzer (MoMA)。
答案 2 :(得分:1)
对于 2016年后遇到此问题的人,可以使用.NET Core-由Microsoft和.NET社区在GitHub上维护的开源通用开发平台。它是跨平台的(支持Windows,macOS和Linux),可用于构建设备,云和IoT应用程序。