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)
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")
.