web-dev-qa-db-fra.com

Equivalent Environment.MachineName pour .NET Standard 1.4

Je crée une bibliothèque de classes qui sera utilisée dans un projet WPF et un projet .NET Core. J'essaie d'obtenir le nom de la machine à l'aide de mon application.

Dans .NET Core et dans l'application WPF, je peux utiliser la valeur Environment.MachineName. Cependant, dans ma bibliothèque de classes standard .NET, je ne peux pas.

J'obtiens l'erreur suivante:

'Environnement' ne contient pas de définition pour 'MachineName'

J'ai essayé de faire ce que la réponse suggérée dans cette question mais quand j'essaye d'ajouter System.Windows.Networking.Connectivity.NetworkInformation.GetHostNames() j'obtiens l'erreur suivante:

Le nom "Windows" n'existe pas dans le contexte actuel

Je suppose que cela ne fonctionne que pour les applications universelles Windows 10? Dans tous les cas, je préférerais un moyen indépendant de la plate-forme pour obtenir le nom de la machine (cette façon semble être destinée aux machines Windows uniquement)

13
yitzih

Environment.MachineName Est uniquement disponible dans .NET Standard> 1.5 à l'aide du package System.Runtime.Extensions NuGet (dans .NET Standard 2.0, il est disponible automatiquement).

Vous pouvez également utiliser System.Net.Dns.GetHostName() en référençant le package NuGet System.Net.NameResolution Ou résoudre l'environnement COMPUTERNAME (win) ou HOSTNAME (* nix) variables via Environment.GetEnvironmentVariable("COMPUTERNAME").

37
Martin Ullrich