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)
If you are not sure which version of . NET Standard you should target, go with 2.0 as it offers a balance of reach and APIs available for you to use. If your goal is to make your library usable for many frameworks as possible while gettings all the APIs you can from .
Environment variable indicates the runtime environment in which an application is currently running. ASP.NET Core uses an environment variable called ASPNETCORE_ENVIRONMENT to indicate the runtime environment.
Net Standard is not a framework or platform of its own. It does not have implementations or a runtime, it just defines a specification what different . Net platforms has to implement to remain . Net Standard compliant.
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")
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With