2017-04-05 65 views
2

很多同事和陌生人都向我强调,C#是严格意义上的Windows平台语言,我被告知/驳斥/问过。你可以在非Windows平台上编写C#应用程序吗?

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

+0

实际上,您现在可以在[.NET Core](https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/your-first-mac-aspnet)中完全跨平台使用C#。 – kman

+0

这更像是一个论坛聊天帖子,而不是一个问题。标题问题是一回事,可以通过简单的网页搜索轻松解答。这个问题本身就是一个讨论的邀请,这在Stack Overflow中不起作用。 –

+0

C#得到了很多跨平台的使用....也是在F#世界中,它几乎就像那些使用非Windows机器的人。 –

回答

6
  1. “Visual Studio代码” 一个跨平台的编辑器和轻量级IDE用C#支持
  2. Xamarin - C#为Linux(单声道)和Android
  3. “Visual Studio中的Mac” - https://www.visualstudio.com/vs/visual-studio-mac/ - C#为MacOS和iOS
  4. 跨平台.NET核心(DNX) - https://www.microsoft.com/net/core

C#本身就是一种语言,事实上,与平台无关。直到最近,.NET Framework的基本类库最初都是以Windows为中心的(尽管dotGnu和Mono中有开源的跨平台)。

主要仅Windows .NET中今天的事情是:

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

相关问题