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

Unity 2019升级至2021.3.22f1后遇CS0433错误求解决

Unity 2019升级到2021.3.22f1后CS0433错误解决方法

问题描述

升级后出现多个CS0433类型重复定义错误,具体信息如下:

a. Library/PackageCache/com.unity.purchasing@4.7.0/Runtime/WinRTStub/Factory.cs(15,23): error CS0433: The type 'IWindowsIAP' exists in both 'UnityEngine.Purchasing.WinRTCore, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' and 'winrt, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'

b. Library/PackageCache/com.unity.purchasing@4.7.0/Runtime/SecurityStub/GooglePlayReceipt.cs(37,38): error CS0433: The type 'IPurchaseReceipt' exists in both 'Security, Version=1.0.7807.33496, Culture=neutral, PublicKeyToken=null' and 'UnityEngine.Purchasing.SecurityCore, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'

c. Library/PackageCache/com.unity.purchasing@4.7.0/Runtime/SecurityStub/CrossPlatformValidator.cs(43,16): error CS0433: The type 'IPurchaseReceipt' exists in both 'Security, Version=1.0.7807.33496, Culture=neutral, PublicKeyToken=null' and 'UnityEngine.Purchasing.SecurityCore, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'

d. Library/PackageCache/com.unity.purchasing@4.7.0/Runtime/SecurityStub/AppleValidator.cs(53,16): error CS0433: The type 'AppleReceipt' exists in both 'Security, Version=1.0.7807.33496, Culture=neutral, PublicKeyToken=null' and 'UnityEngine.Purchasing.SecurityCore, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'

e. Library/PackageCache/com.unity.purchasing@4.7.0/Runtime/SecurityStub/AppleValidator.cs(33,16): error CS0433: The type 'AppleReceipt' exists in both 'Security, Version=1.0.7807.33496, Culture=neutral, PublicKeyToken=null' and 'UnityEngine.Purchasing.SecurityCore, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'

解决步骤

1. 升级Unity Purchasing包到兼容版本

旧版本的com.unity.purchasing@4.7.0与Unity 2021 LTS存在兼容性问题,导致类型冲突:

  • 打开Unity的Package Manager,找到com.unity.purchasing,点击更新按钮选择适配2021 LTS的最新版本(建议4.10.0及以上)。
  • 若Package Manager无更新选项,手动修改Packages/manifest.json,将com.unity.purchasing的版本号改为"4.10.0",保存后重启Unity,自动下载更新包。

2. 清理缓存并重新生成Library

  • 关闭Unity,删除Library/PackageCache/com.unity.purchasing@4.7.0文件夹。
  • (可选但推荐)删除整个Library文件夹,重启Unity后会自动重新生成依赖文件。

3. 手动指定命名空间(临时方案)

若无法立即升级包,可通过指定完整命名空间解决冲突:

  • 对于Security相关类型,将IPurchaseReceipt改为UnityEngine.Purchasing.SecurityCore.IPurchaseReceipt,AppleReceipt改为UnityEngine.Purchasing.SecurityCore.AppleReceipt。
  • 对于WinRT类型,将IWindowsIAP改为UnityEngine.Purchasing.WinRTCore.IWindowsIAP。
  • 注意:修改PackageCache内的文件会在包更新时被覆盖,仅作临时修复。

4. 移除旧的Security.dll引用

检查项目中是否存在手动导入的Security.dll(旧版本Purchasing遗留文件):

  • 在Project窗口搜索Security.dll,找到后删除,重新编译项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:55:24