【问题标题】:Can you write C# apps in non-Windows platforms?您可以在非 Windows 平台上编写 C# 应用程序吗?
【发布时间】:2017-08-30 12:22:57
【问题描述】:

我被很多同事和陌生人告诉/反驳/询问过,他们向我强调,C# 是一种严格的 Windows 平台语言。

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

【问题讨论】:

  • 其实你现在可以在.NET Core完全跨平台使用C#了。
  • 这感觉更像是一个论坛聊天帖子,而不是一个问题。标题问题是一回事,可以通过简单的网络搜索轻松回答。这个问题本身就是一个讨论邀请,这在 Stack Overflow 上不起作用。
  • C# 经常跨平台使用.... 同样在 F# 世界中,似乎每个人都使用非 Windows 机器。
  • 另外,我在 Mac 上为 C# 使用 Jetbrains Rider ide

标签: c# .net cross-platform


【解决方案1】:
  1. “Visual Studio Code”是一款支持 C# 的跨平台编辑器和轻量级 IDE
  2. Xamarin - 适用于 Linux(单声道)和 Android 的 C#
  3. “Visual Studio for Mac” - https://www.visualstudio.com/vs/visual-studio-mac/ - 适用于 macOS 和 iOS 的 C#
  4. 跨平台 .NET Core (DNX) - https://www.microsoft.com/net/core

C# 本身实际上是一种与平台无关的语言。 .NET 框架的基类库最初还是以 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 进行换行,或者假设在路径中使用驱动程序字母和反斜杠的代码。

【讨论】:

    猜你喜欢
    • 2010-10-14
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多