I am creating a class library that will be used in a WPF project and a .NET Core project. I am trying to get the name of the machine using my application.
In both .NET Core and the WPF application I can use Environment.MachineName
value. However in my .NET Standard Class library I cannot.
I get the following error:
'Environment' does not contain a definition for 'MachineName'
I tried doing what the answer suggested in this question but when I try to add System.Windows.Networking.Connectivity.NetworkInformation.GetHostNames()
I get the following error:
The name 'Windows' does not exist in the current context
I assume that this only works for Windows 10 Universal Apps? Either way I would prefer a platform independent way of getting the machine name (this way seems like its meant for windows machines only)
Environment.MachineName
is only available in .NET Standard > 1.5 using the System.Runtime.Extensions
NuGet package (in .NET Standard 2.0 it is available automatically).
As an alternative, you can either use System.Net.Dns.GetHostName()
by referencing the System.Net.NameResolution
NuGet package or resolve the COMPUTERNAME
(win) or HOSTNAME
(*nix) environment variables via Environment.GetEnvironmentVariable("COMPUTERNAME")
.