你能在非Windows平台上编写C#应用程序吗?

时间:2017-04-05 04:29:49

标签: c# .net cross-platform

我已经被很多同事和陌生人告知/反驳,他们强烈主张我,C#是一种严格的Windows平台语言。

我很想听听那些在非Windows平台上从事过C#项目的人,并听取他们正在使用的技术堆栈,以便做到这一点。

1 个答案:

答案 0 :(得分:6)

  1. “Visual Studio Code”是一个跨平台编辑器和带有C#支持的轻量级IDE
  2. Xamarin - C#for Linux(Mono)和Android
  3. “Visual Studio for Mac” - https://www.visualstudio.com/vs/visual-studio-mac/ - C#for macOS and iOS
  4. 跨平台.NET Core(DNX) - https://www.microsoft.com/net/core
  5. C#本身是一种实际上与平台无关的语言。 .NET Framework的基类库最初是以Windows为中心的(尽管dotGnu和Mono中有开源跨平台)。

    今天.NET中仅限Windows的主要内容是:

    • System.Windows.Forms:WinForms - Win32和hWnd的包装器)
    • System.Drawing.*(围绕GDI的包装)
    • WPF:WPF本身与Windows无关,但是没有认真尝试将其移植到其他平台。最接近的是Moonlight,这是Mono的Silverlight版本,但它不是WPF的直接替代品。
    • 当然还有Microsoft.Win32名称空间。

    还有其他一些内容,例如System.Diagnostics.Process,它们是围绕Windows环境的假设而设计的(例如Process.Handle)。

    另一个需要解决的问题是第三方库中的错误假设,例如代码总是使用\r\n代替Environment.Newline,或代码假设使用了驱动程序字母和反斜杠在路径中。