You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity使用Microsoft.Data.SqlClient遇PlatformNotSupportedException错误求助

解决Unity中Microsoft.Data.SqlClient的PlatformNotSupportedException错误

问题背景

在Unity脚本中通过NuGet插件导入Microsoft.Data.SqlClient库后,运行时触发平台不支持错误:

PlatformNotSupportedException: Microsoft.Data.SqlClient is not supported on this platform.
Microsoft.Data.SqlClient.SqlConnection..ctor(system.string connectionString)

错误发生在代码行:

SqlConnection con = new SqlConnection(_connectionString);

项目基础信息:

  • Unity版本:2022.3.41f1
  • 目标Microsoft.Data.SqlClient版本:5.2.2
  • 脚本编辑器:Rider 2024.3.3
  • 目标平台:Windows、Android、WebGL

关联错误提示:
Unity同时报出XML解析错误及多个“Import Error Code(4)”,示例如下:

Message: Build asset version error: assets/packages/microsoft.identity.client.4.61.3/lib/netstandard2.0/microsoft.identity.client.dll.meta in SourceAssetDB has modification time of '2025-01-02T19:10:19.6060966Z' while content on disk has modification time of '2025-01-02T19:10:22.8671146Z'

已尝试但无效的操作:

  • 手动编辑.csproj文件添加包引用,被Unity构建时重置
  • 复制DLL到Assets>Packages文件夹,未生效且出现未安装的预览版库
  • 修改API兼容性级别为.NET Standard 4.x或.NET Framework,错误依旧

分步解决方案

1. 针对性解决平台兼容问题

不同平台对Microsoft.Data.SqlClient的支持差异极大,需分别处理:

  • Windows平台:
    1. 将Unity的API兼容性级别设置为.NET Framework 4.x(路径:Edit > Project Settings > Player > Other Settings > Configuration)
    2. 删除项目根目录下的Library文件夹,执行Assets > Reimport All清除旧缓存,确保Unity重新生成适配的项目文件
    3. 确认NuGet导入的是适配.NET Framework的5.2.2版本,避免误装.NET Core专属包
  • Android平台:
    Microsoft.Data.SqlClient对Android仅提供实验性支持,稳定性极差。建议改用Sqlite-net本地数据库,或通过后端API中转SQL Server请求,不要直接在客户端连接数据库
  • WebGL平台:
    WebGL运行时完全不支持Microsoft.Data.SqlClient(无系统级网络套接字权限),必须通过后端API代理所有数据库操作

2. 修复NuGet导入的错误

  • 彻底清理旧包残留:
    删除Assets/Packages下所有Microsoft.Data.SqlClient、microsoft.identity.client相关文件,同时删除Packages/manifest.json中对应的包引用,重启Unity后重新通过NuGet插件安装指定版本5.2.2,勾选“稳定版”过滤预览包
  • 修复meta文件时间戳错误:
    删除报错的.meta文件,Unity会自动重新生成正确的元数据,之后执行Assets > Refresh刷新资源

3. 正确配置项目文件(替代手动编辑.csproj)

  • 开启Unity的自动生成项目文件功能:Edit > Preferences > External Tools,勾选Generate .csproj files for:下的所有选项
  • 使用NuGetForUnity插件的Force Restore功能(插件菜单:NuGet > Restore Packages),强制Unity同步正确的包引用,避免构建时重置配置

4. 验证库加载状态

在脚本中添加调试代码,确认库是否成功加载:

#if UNITY_EDITOR || UNITY_STANDALONE_WIN
void CheckLibraryLoad()
{
    try 
    {
        var assembly = System.Reflection.Assembly.Load("Microsoft.Data.SqlClient");
        Debug.Log($"库加载成功:{assembly.FullName}");
    } 
    catch (System.Exception ex) 
    {
        Debug.LogError($"库加载失败:{ex.Message}");
    }
}
#endif

内容的提问来源于stack exchange,提问作者Hayden Ridgeway

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 05:33:15