Unity 2021.3.13f升级至14f后遇System.Security.Permissions与mscorlib冲突
解决Unity 2021.3.14f升级后FileIOPermission类型冲突问题
升级Unity从2021.3.13f到2021.3.14f后出现如下编译错误:
Library\PackageCache\com.unity.services.core@1.6.0\Editor\Core\Configuration\ProjectConfigurationBuildInjectorWithPlayerProcessor.cs(43,50): error CS0433: The type 'FileIOPermission' exists in both 'System.Security.Permissions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' and 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
已知背景:
- Unity 2021.3.14f自动将
com.unity.services.core包从1.5.2升级至1.6.0 - 项目集成了Firebase和PlayFab插件,Firebase依赖mscorlib
- 已尝试:外部依赖管理器处理冲突、更新Firebase/PlayFab至最新版、切换.NET Standard与.NET Framework,问题未解决
可行解决方案
- 锁定com.unity.services.core至稳定版本
直接修改项目根目录下的Packages/manifest.json,强制指定使用1.5.2版本的服务核心包:
"com.unity.services.core": "1.5.2",
完成后删除项目的Library目录,重启Unity,让编辑器重新下载并使用指定版本的包,避开存在冲突的1.6.0版本。
- 修改报错代码的命名空间限定
找到报错文件Library/PackageCache/com.unity.services.core@1.6.0/Editor/Core/Configuration/ProjectConfigurationBuildInjectorWithPlayerProcessor.cs,将代码中的FileIOPermission替换为全局命名空间限定的完整类型:
// 强制使用mscorlib中的版本 global::System.Security.Permissions.FileIOPermission permission = new global::System.Security.Permissions.FileIOPermission(...);
注意:Library目录下的文件属于缓存文件,Unity重启或重新导入包后可能被覆盖,此方法适合临时解决问题,长期建议使用版本锁定方案。
- 添加程序集绑定重定向规则
在Assets/Plugins目录下新建AssemblyRedirects.xml文件,添加绑定重定向规则,让Unity优先使用mscorlib中的System.Security.Permissions版本:
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Security.Permissions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <bindingRedirect oldVersion="5.0.0.0" newVersion="4.0.0.0" /> </dependentAssembly> </assemblyBinding>
保存后重启Unity,编辑器会根据规则处理程序集引用冲突。
内容的提问来源于stack exchange,提问作者Tomas Toth
相关产品推荐
相关产品推荐

