Comment puis-je déterminer sur quel système d'exploitation mon application .NET Core s'exécute? Dans le passé, je pouvais utiliser Environment.OSVersion
.
Quelle est la méthode actuelle pour déterminer si mon application s'exécute sur Mac ou Windows?
Réponses:
Méthode
Argument possible
Exemple
Mettre à jour
Merci au commentaire d'Oleksii Vynnychenko
Vous pouvez obtenir le nom et la version du système d'exploitation sous forme de chaîne en utilisant
Par exemple
osNameAndVersion
seraitMicrosoft Windows 10.0.10586
la source
System.Runtime.InteropServices.RuntimeInformation.OSDescription
- renvoie la description du système d'exploitation avec la version, etc.System.Environment.OSVersion.Platform
pour la cohérence?IsOSPlatform(OSPlatform.Create("FreeBSD"))
s'ils sont pris en charge maintenant ou s'ils peuvent être ajoutés à l'avenir. Cependant, il n'est pas très clair quelle serait une approche sûre pour les chaînes à passer (par exemple, la casse est-elle importante ou"bsd"
correspond-elle aux deux"FreeBSD"
et"NetBSD"
?). Voir la discussion sur cette fonctionnalité ici .System.Environment.OSVersion.Platform
peut être utilisé dans le .NET Framework complet et Mono mais:System.Runtime.InteropServices.RuntimeInformation
peut être utilisé dans .NET Core mais:(voir le numéro 3032 de corefx pour plus de détails)
Vous pouvez épingler des fonctions non gérées spécifiques à la plate-forme, telles que
uname()
mais:Donc, ma solution suggérée (voir le code ci-dessous) peut sembler sournoise au début, mais:
la source