问题描述
随机地,我似乎得到了System.TypeLoadException
。每当我清除设备上的应用存储时,也会发生这种情况。这仅适用于由Azure DevOps管道生成的应用程序生成。无论将其配置为“调试”还是“生产”,我都无法从我的设备上在本地版本中重现此错误。这是我与此问题有关的一些错误:
JsonSerializer.GetMatchingConverter(System.Collections.Generic.IList`1 [T]转换器,System.Type objectType) System.TypeLoadException:无法从typeref(程序集“ System.Data,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = b77a5c561934e089”中的预期类“ System.Data.sqlTypes.sqlBinary”)解析带有令牌01000113的类型
DataSetConverter.CanConvert(System.Type valueType) System.TypeLoadException:无法加载字段'System.Data.DataSet:PropertyChanging'(28)的类型,原因是:无法从typeref中解析带有令牌0100003c的类型(组件中的预期类'System.ComponentModel.PropertyChangedmz ntHandler' 'System,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e')程序集:System,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e类型:System.ComponentModel.PropertyChangedmz ntHandler成员:(空)
DefaultContractResolver.CreateObjectContract(System.Type objectType) System.TypeLoadException:无法解析来自typeref的令牌010000c4的类型(程序集“ System.Runtime.Serialization”中的预期类“ System.Runtime.Serialization.DataContractAttribute”,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e))
为什么程序集中缺少这些类?可能与Azure DevOps无法正确构建Android应用程序包有关吗?
解决方法
清除Azure DevOps应用程序构建上的存储后,Xamarin Android System.TypeLoadException
这样的错误通常意味着程序集不再同步。这意味着聚集在不同项目的bin和obj文件夹中的程序集包含混合版本,因此可能导致意外行为。
要解决此问题,请尝试:
- 尝试清理并重建完整的解决方案,如果使用私有代理,请从每个项目文件夹中手动删除
bin
和obj
文件夹。 - 在使用Azure devops构建应用程序时检查是否使用Visual Studio 2019编译应用程序。
您可以查看this thread和this thread了解更多详细信息。