2017-05-14 3 views
5

WPF 프로젝트 및 .NET 핵심 프로젝트에서 사용할 클래스 라이브러리를 만들고 있습니다. 내 응용 프로그램을 사용하여 기계의 이름을 얻으려고합니다..NET Standard 1.4에 해당하는 Environment.MachineName

.NET Core 및 WPF 응용 프로그램에서 모두 Environment.MachineName 값을 사용할 수 있습니다. 그러나 내 .NET 표준 클래스 라이브러리에서 수 없습니다.

나는 다음과 같은 오류 얻을 :

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

내가 대답은 this question에서 제안하는 일을 시도를하지만 나는 다음과 같은 오류가 System.Windows.Networking.Connectivity.NetworkInformation.GetHostNames()를 추가하려고하면

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

나는이 가정 Windows 10 Universal Apps에서만 작동합니까? 어느 쪽이든 플랫폼 독립적 인 기계 이름을 얻는 방법을 선호합니다 (이 방법은 Windows 컴퓨터에만 해당되는 것처럼 보입니다)

답변

16

Environment.MachineNameSystem.Runtime.Extensions NuGet 패키지를 사용하는 .NET Standard> 1.5에서만 사용할 수 있습니다 (.NET Standard 2.0 자동으로 사용 가능).

대안으로, 당신은 System.Net.NameResolution NuGet 패키지를 참조하여 System.Net.Dns.GetHostName()를 사용할 수 있습니다 또는 Environment.GetEnvironmentVariable("COMPUTERNAME")를 통해 COMPUTERNAME (승리) 또는 HOSTNAME (* nix에서 스크립트) 환경 변수를 해결.

+1

굉장합니다. @ martin-ullrich 감사합니다. 나는'var name = Environment.GetEnvironmentVariable ("CUMPUTERNAME")으로 끝났습니까 ?? Environment.GetEnvironmentVariable ("HOSTNAME");'Environment.GetEnvironmentVariable ("COMPUTERNAME")에 대해 – Anders

+0

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