2017-04-05 61 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或代碼假設使用的驅動程序字母和反斜槓路徑。

相關問題