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

Unity HoloLens2项目添加包后遇System.Web.HttpUtility缺失错误求助

问题:HoloLens 2 Unity AR项目添加QR定位包后无法运行,出现System.Web相关引用错误

问题描述

原本部署正常的HoloLens 2 Unity 3D AR项目,添加一款用于空间定位QR码的包后,出现以下问题:

  • 构建成功但项目无法在设备上运行
  • HoloLens未弹出相机权限请求,无任何反应
  • 共出现15个编译错误,核心为System.Web.HttpUtility相关类型/方法在目标框架中不存在的引用错误

错误日志示例

Reference rewriter: Error: type `System.Web.HttpUtility` doesn't exist in target framework. It is referenced from RestSharp.dll at System.String RestSharp.Extensions.StringExtensions::HtmlDecode(System.String).
UnityEngine.Debug:LogError (object)
PostProcessWinRT:RunReferenceRewriter () (at C:/buildslave/unity/build/PlatformDependent/MetroPlayer/Extensions/Managed/PostProcessWinRT.cs:1219)
PostProcessWinRT:Process () (at C:/buildslave/unity/build/PlatformDependent/MetroPlayer/Extensions/Managed/PostProcessWinRT.cs:209)
UnityEngine.GUIUtility:ProcessEvent (int,intptr)

Reference rewriter: Error: method `System.String System.Web.HttpUtility::HtmlDecode(System.String)` doesn't exist in target framework. It is referenced from RestSharp.dll at System.String RestSharp.Extensions.StringExtensions::HtmlDecode(System.String).
UnityEngine.Debug:LogError (object)
PostProcessWinRT:RunReferenceRewriter () (at C:/buildslave/unity/build/PlatformDependent/MetroPlayer/Extensions/Managed/PostProcessWinRT.cs:1219)
PostProcessWinRT:Process () (at C:/buildslave/unity/build/PlatformDependent/MetroPlayer/Extensions/Managed/PostProcessWinRT.cs:209)
UnityEngine.GUIUtility:ProcessEvent (int,intptr)

Reference rewriter: Error: method `System.Collections.Specialized.NameValueCollection System.Web.HttpUtility::ParseQueryString(System.String)` doesn't exist in target framework. It is referenced from RestSharp.dll at RestSharp.Authenticators.OAuth.OAuthWebQueryInfo RestSharp.Authenticators.OAuth.OAuthWorkflow::BuildProtectedResourceInfo(System.String,RestSharp.Authenticators.OAuth.WebParameterCollection,System.String).
UnityEngine.Debug:LogError (object)
PostProcessWinRT:RunReferenceRewriter () (at C:/buildslave/unity/build/PlatformDependent/MetroPlayer/Extensions/Managed/PostProcessWinRT.cs:1219)
PostProcessWinRT:Process () (at C:/buildslave/unity/build/PlatformDependent/MetroPlayer/Extensions/Managed/PostProcessWinRT.cs:209)
UnityEngine.GUIUtility:ProcessEvent (int,intptr)

已尝试的无效解决方案

  • 将API兼容性从.NET 4.x改为.NET Standard 2.0:导致更严重错误,无法完成构建
  • 添加csc.rps文件并写入-r:System.Web.dll:无效果
  • 修改csc.rps文件内容:无变化

当前环境

  • Unity版本:2019.4.24f1(无法更换)
  • Unity构建设置:ARM64、D3D
  • 部署方式:Visual Studio 2019,以Master、ARM64、Device模式部署到HoloLens 2

解决方案

1. 处理RestSharp的UWP兼容问题

错误根源是新增包引入的RestSharp.dll依赖了仅属于.NET Framework桌面类库的System.Web.HttpUtility,而HoloLens使用的UWP框架不包含该类库:

  • 若项目实际未用到RestSharp的OAuth或HTML解码功能,直接删除项目中的RestSharp.dll文件
  • 若必须保留RestSharp,替换为针对.NET Standard 2.0编译、移除了System.Web依赖的版本(需适配Unity 2019.4的兼容要求)

保持API兼容性为**.NET 4.x**,在Unity项目根目录创建link.xml文件,添加以下内容,指导Unity的引用重写器忽略System.Web相关的缺失引用:

<linker>
  <assembly fullname="RestSharp">
    <type fullname="RestSharp.Extensions.StringExtensions" preserve="all"/>
    <type fullname="RestSharp.Authenticators.OAuth.OAuthWorkflow" preserve="all"/>
  </assembly>
  <assembly fullname="System.Web" ignore="true"/>
</linker>

3. 修复相机权限配置

项目无法弹出相机权限请求,大概率是权限配置被新增包覆盖:

  • 打开Unity的Player Settings → Publishing Settings → Capabilities,确保勾选Webcam权限
  • 构建后在Visual Studio项目中打开Package.appxmanifest,确认包含以下权限声明:
<DeviceCapability Name="webcam"/>

4. 清理缓存后重新构建

  • 删除Unity项目的Library、Temp文件夹,清理本地缓存
  • 在Visual Studio中执行Clean Solution,再重新生成并部署项目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 10:37:40