【问题标题】:Environment.MachineName equivalent for .NET Standard 1.4Environment.MachineName 等效于 .NET Standard 1.4
【发布时间】:2017-10-13 04:32:34
【问题描述】:

我正在创建一个将在 WPF 项目和 .NET Core 项目中使用的类库。我正在尝试使用我的应用程序获取机器的名称。

在 .NET Core 和 WPF 应用程序中,我都可以使用 Environment.MachineName 值。但是在我的 .NET 标准类库中我不能。

我收到以下错误:

“环境”不包含“机器名”的定义

我尝试按照this question 中建议的答案进行操作,但是当我尝试添加System.Windows.Networking.Connectivity.NetworkInformation.GetHostNames() 时出现以下错误:

当前上下文中不存在名称“Windows”

我假设这仅适用于 Windows 10 通用应用程序?无论哪种方式,我都更喜欢一种独立于平台的方式来获取机器名称(这种方式似乎只适用于 Windows 机器)

【问题讨论】:

    标签: c# .net .net-standard computer-name


    【解决方案1】:

    Environment.MachineName 仅在使用System.Runtime.Extensions NuGet 包的 .NET Standard > 1.5 中可用(在 .NET Standard 2.0 中自动可用)。

    作为替代方案,您可以通过引用System.Net.NameResolution NuGet 包来使用System.Net.Dns.GetHostName(),或者通过Environment.GetEnvironmentVariable("COMPUTERNAME") 解析COMPUTERNAME (win) 或HOSTNAME (*nix) 环境变量。

    【讨论】:

    • 太棒了。谢谢@martin-ullrich。我最终得到了var name = Environment.GetEnvironmentVariable("CUMPUTERNAME") ?? Environment.GetEnvironmentVariable("HOSTNAME");
    • @Anders 我复制了这段代码,但没有意识到你在“CUMPUTERNAME”中有错字:)
    猜你喜欢
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    相关资源
    最近更新 更多