web-dev-qa-db-ja.com

.NET Standard 1.4に相当するEnvironment.MachineName

WPFプロジェクトと.NET Coreプロジェクトで使用されるクラスライブラリを作成しています。アプリケーションを使用してマシンの名前を取得しようとしています。

.NET CoreとWPFアプリケーションの両方で、_Environment.MachineName_値を使用できます。ただし、.NET標準クラスライブラリではできません。

次のエラーが表示されます。

「環境」に「マシン名」の定義が含まれていません

この質問 で答えが示唆したことをしようとしましたが、System.Windows.Networking.Connectivity.NetworkInformation.GetHostNames()を追加しようとすると、次のエラーが表示されます。

「Windows」という名前は現在のコンテキストに存在しません

これはWindows 10 Universal Appsでのみ機能すると思いますか?どちらの方法でも、マシン名を取得するプラットフォームに依存しない方法を好むでしょう(この方法は、Windowsマシン専用です)

13
yitzih

_Environment.MachineName_は、_System.Runtime.Extensions_ NuGetパッケージを使用して.NET Standard> 1.5でのみ使用できます(.NET Standard 2.0では自動的に使用可能です)。

代わりに、System.Net.Dns.GetHostName()を_System.Net.NameResolution_ NuGetパッケージを参照して使用するか、COMPUTERNAME(win)またはHOSTNAME(* nix)環境変数を解決できます。 Environment.GetEnvironmentVariable("COMPUTERNAME")経由。

37
Martin Ullrich