2017-04-05 1 views
2

J'ai été informé/réfuté/demandé par tant de collègues et d'inconnus, qui m'ont affirmé catégoriquement, que C# est un langage de plateforme strictement Windows. J'aimerais recevoir des nouvelles de ceux qui ont travaillé sur des projets C# dans une plate-forme non-Windows, et aussi entendre sur quelle pile technologique ils utilisent, pour ce faire.Pouvez-vous écrire des applications C# dans des plates-formes non-Windows?

+0

En fait, vous pouvez utiliser C# dans [.NET Core] (https://docs.microsoft.com/en-us/aspnet/core/tutorials/your-first-mac-aspnet) complètement cross-platform maintenant. – kman

+0

Cela ressemble plus à un message de discussion sur un forum qu'à une question. La question du titre est une chose, et peut facilement être répondu par une simple recherche sur le Web. La question elle-même est une invitation à une discussion, qui ne fonctionne pas chez Stack Overflow. –

+0

C# s'utilise beaucoup cross plate-forme .... également dans le monde F #, il semble presque que tout le monde utilisant des machines non Windows. –

Répondre

6
  1. "Code Visual Studio" un éditeur multi-plateforme et IDE léger avec C# support
  2. Xamarin - C# pour Linux (Mono) et Android
  3. "Visual Studio pour Mac" - https://www.visualstudio.com/vs/visual-studio-mac/ - C# pour Mac OS et iOS
  4. Core .NET multi-plateforme (DNX) - https://www.microsoft.com/net/core

C# lui-même est une langue qui est, en fait, la plate-forme agnostique. La bibliothèque de classes de base de .NET Framework était à l'origine plutôt centrée sur Windows jusqu'à récemment (bien qu'il y ait eu des plateformes croisées open-source dans dotGnu et Mono).

Les principales choses Windows uniquement aujourd'hui .NET sont:

  • System.Windows.Forms: WinForms - une enveloppe autour Win32 et hWnd)
  • System.Drawing.* (une enveloppe autour GDI)
  • WPF: Il y a presque rien à propos de WPF qui le lie intrinsèquement à Windows, cependant il n'y a eu aucune tentative sérieuse pour le porter sur d'autres plateformes. Le plus proche est Moonlight, qui est la version de Silverlight de Mono, mais ce n'est pas un remplacement de WPF.
  • et bien sûr, les espaces de noms Microsoft.Win32.

Il y a d'autres choses, comme System.Diagnostics.Process qui sont clairement conçus autour de la présomption d'un environnement Windows (par exemple Process.Handle). Un autre problème à résoudre est de mauvaises hypothèses dans les bibliothèques tierces, comme le code utilisant toujours \r\n pour les sauts de ligne au lieu de Environment.Newline, ou le code supposant l'utilisation de pilotes-lettres et de backslashes dans les chemins.