任何C#应用程序都可以在Linux上运行吗?

22

我正在用C#开发一个游戏服务器。该服务器通过套接字与客户端交流,并使用自定义数据包协议发送byte[]。问题是,这个软件会是Windows操作系统专用的,还是能够在Linux服务器上运行。我已经阅读了不同论坛上的不同帖子,有些开发人员说他们的服务器只能在Windows操作系统上运行,而有些人则说它可以在Linux上运行。

是否有任何具体因素?应用程序必须特别编写才能在Linux上运行吗?


1
取决于您在Mono或.NET Core上运行它。有一些未实现的功能,但大多数都已经完成了。 - Sami Kuhmonen
假设您已经搜索了类似于https://www.bing.com/search?q=c%23+run+on+linux的内容,目前还不清楚您的帖子与此主题上的一些现有问题有何不同。如果提供更多细节,该问题很可能不再是重复的。 - Alexei Levenkov
1个回答

37

2020年更新

.NET Core和.NET Framework正在合并成“.NET 5”。从所有方面来看,这只是 .NET Core 的下一个版本(而 .NET Framework 将消失)。

WPF仍然只能在Windows上运行(尽管正在开发基于通用XAML的UI系统),即使它在.NET Core/5上运行,您仍然必须为Linux构建特定的支持项目类型,但跨平台支持比我最初编写此内容时要好得多。

原文

为了使 .NET 代码能够在 Linux 上运行,您需要一个与该平台兼容的 .NET 版本。

完整的 .NET 仅适用于 Windows,但有 Mono 框架可在 Linux 上运行。.NET Core 也正在移植到 Linux。

Mono 和 .NET Core 都不支持标准 .NET 的全部功能。例如,两者都不会让您运行 WPF 应用程序。因此,只要您的代码与前述框架之一兼容,就可以在 Linux 上运行它。

针对你提供的特定示例,你提到的类应该得到支持,我认为在Mono或.NET Core下运行不会有任何问题。

2
Mono已经支持了将近99.9%的.NET Framework,通常任何C#服务或控制台应用程序都可以工作,即使是针对.NET编译而非针对Mono。 - Gusman
1
@Gusman 那是真的,最容易说明不起作用的例子就是WPF(还有一些 .NET 4.5 的类也是如此,如果我没记错的话)。 - BradleyDotNET
1
因为我说了控制台或服务:D,接口只是缺乏,因为它非常特定于操作系统。是的,我喜欢Mono XD。 - Gusman
1
@PhilippeHaussmann 我非常清楚这些差异。正如你所说,情况已经发生了变化。我为这个答案的未来观众写了一个更新。 - BradleyDotNET
2
@mLstudent33 更新在这里。我在发表评论时编辑了这篇帖子。 - BradleyDotNET
显示剩余2条评论

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