2017-05-14 27 views
5

Bir WPF projesinde ve .NET Core projesinde kullanılacak bir sınıf kitaplığı oluşturuyorum. Uygulamamı kullanarak makinenin adını almaya çalışıyorum..NET Standard 1.4 için Environment.MachineName eşdeğeri

Hem .NET Core hem de WPF uygulamasında Environment.MachineName değerini kullanabilirim. Ancak .NET standart sınıf kitaplığımda yapamıyorum.

aşağıdaki hatayı alıyorum:

'Environment' does not contain a definition for 'MachineName'

Cevabın this question önerilen yapıyor çalıştı ama aşağıdaki hatayı alıyorum System.Windows.Networking.Connectivity.NetworkInformation.GetHostNames() eklemeye çalıştığınızda:

The name 'Windows' does not exist in the current context

Bu varsayalım sadece Windows 10 Evrensel Uygulamalar için çalışır? Her iki durumda da makine adını almanın bağımsız bir yolunu tercih ederim (bu şekilde yalnızca Windows makinelerinde kullanıldığı anlamına gelir)

cevap

16

Environment.MachineName yalnızca System.Runtime.Extensions NuGet paketini kullanarak .NET Standard> 1.5 sürümünde kullanılabilir (.NET Standardında) 2.0 otomatik olarak kullanılabilir).

alternatif olarak, System.Net.NameResolution Nuget paketini başvurarak System.Net.Dns.GetHostName() kullanabilir veya Environment.GetEnvironmentVariable("COMPUTERNAME") aracılığıyla COMPUTERNAME (kazan) ya da HOSTNAME (* nix) ortam değişkenleri çözmek.

+1

Harika. Teşekkürler martin-ullrich. Ben var adı = Environment.GetEnvironmentVariable ("CUMPUTERNAME") ile bitti? Environment.GetEnvironmentVariable ("HOSTNAME"); 'Environment.GetEnvironmentVariable (" BİLGİSAYARADI ") için – Anders

+0

+ 1? Environment.GetEnvironmentVariable ("HOSTNAME'deki"); ' – brthornbury