Environment.MachineName equivalent for .NET Standard 1.4
Asked Answered
B

1

15

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)

Baruch answered 14/5, 2017 at 8:5 Comment(0)
A
41

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

Ascension answered 14/5, 2017 at 8:19 Comment(2)
Awesome. Thank you @martin-ullrich. I ended up with var name = Environment.GetEnvironmentVariable("CUMPUTERNAME") ?? Environment.GetEnvironmentVariable("HOSTNAME");Bagatelle
@Bagatelle I copied this code and haven't realized you have a typo in "CUMPUTERNAME" :)Rhoda

© 2022 - 2024 — McMap. All rights reserved.