C#程序中出现意外的字符“$”的解决方法

C#程序中出现意外的字符“$”的解决方法

问题描述

同事发给我的一个小程序,打开以后编译报错,错误信息:

意外的字符“$”

问题分析

出错代码如下:

#region 获取电脑UUID
/// <summary>
/// 获取电脑UUID
/// </summary>
/// <returns></returns>
public static string GetUuid()
{
    var uuid = string.Empty;
    var computerName = "localhost";
    var scope = new ManagementScope($"\\\\{computerName}\\root\\CIMV2", null);			//此行代码出错
    scope.Connect();
    ObjectQuery query = new ObjectQuery("SELECT UUID FROM Win32_ComputerSystemProduct");
    ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);

    foreach (var wmiObject in searcher.Get())
    {
        uuid  = wmiObject["UUID"].ToString();
    }
    return uuid.Replace("-","");
}

#endregion

经过分析发现同事的VS开发环境使用的是.netframework4.72,而我电脑安装的VS2013,最高支持.netframework4.5,我平时开发都是基于.netframework4.0的。而出错的哪行代码语法之后.netframework4.7以上才支持。

解决方法

1、升级开发环境,安装.netframework4.72。
2、把出错的代码改为.netframework4.0支持的。
考虑到实际使用环境,我把代码改为.netframework4.0支持的,如下:

#region 获取电脑的UUID

/// <summary>
/// 获取电脑的UUID
/// </summary>
/// <returns>返回电脑的UUID</returns>
public static string GetUuid()
{
    var uuid = string.Empty;
    var computerName = "localhost";
    var scope = new ManagementScope(String.Format("\\\\{0}\\root\\CIMV2", computerName), null);
    scope.Connect();
    ObjectQuery query = new ObjectQuery("SELECT UUID FROM Win32_ComputerSystemProduct");
    ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);

    foreach (var wmiObject in searcher.Get())
    {
        uuid = wmiObject["UUID"].ToString();
    }
    return uuid.Replace("-", String.Empty);
}

#endregion
发布了107 篇原创文章 · 获赞 291 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/zlbdmm/article/details/103408920