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
相关产品推荐
相关产品推荐

