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

cod*_*ife 2 .net c# cross-platform

我被许多同事和陌生人告知/反驳/问过,他们强调断言,C#是一种严格的Windows平台语言.

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

Dai*_*Dai 6

  1. "Visual Studio Code"是一个跨平台编辑器和轻量级IDE,支持C#
  2. Xamarin - 适用于Linux(Mono)和Android的C#
  3. "适用于Mac的Visual Studio" - https://www.visualstudio.com/vs/visual-studio-mac/ - 适用于macOS和iOS的C#
  4. 跨平台.NET Core(DNX) - https://www.microsoft.com/net/core

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代码,或者假设在路径中使用驱动程序字母和反斜杠的代码.