C#调用Trimble Connect APIs出现类型加载报错该如何解决
报错排查与解决方案
报错详情:
Could not load type 'System.ServiceModel.Description.DispatcherSynchronizationBehavior' from assembly 'System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
该错误本质为WCF组件版本不匹配或者依赖缺失,可按以下步骤依次排查:
1. 校验项目目标框架兼容性
- 若你的项目基于**.NET Core / .NET 5及更高版本**开发:Trimble Connect官方旧示例默认适配.NET Framework,原生
System.ServiceModel 4.0.0.0属于.NET Framework专属程序集,新.NET框架未内置对应类型,需手动安装WCF相关NuGet包:- 安装版本一致的
System.ServiceModel.Primitives和System.ServiceModel.Http包 - 避免混合安装不同版本的WCF相关依赖,防止类型加载冲突
- 安装版本一致的
- 若你的项目基于**.NET Framework**开发:
DispatcherSynchronizationBehavior仅在.NET Framework 4.5及更高版本中提供,需确认你的项目目标框架版本不低于4.5,版本过低时升级目标框架即可。
2. 修正错误的程序集绑定重定向
- 打开项目的
App.config(桌面端)或Web.config(web端)配置文件,检查是否存在System.ServiceModel相关的绑定重定向规则,错误的重定向会强制加载4.0.0.0版本的程序集,导致类型找不到,删除错误的重定向条目或者修正为实际安装的版本即可。
3. 清理项目与NuGet缓存
- 关闭IDE,手动删除项目根目录下的
bin、obj文件夹 - 运行命令
dotnet nuget locals all --clear清除全局NuGet缓存 - 重新还原依赖后编译项目
4. 确认Trimble Connect SDK适配性
- 检查你安装的Trimble Connect SDK版本是否和项目目标框架匹配,旧版SDK仅支持.NET Framework,若使用新.NET框架需更换支持.NET Standard/.NET Core的新版SDK。
内容的提问来源于stack exchange,提问作者sMuLe
相关产品推荐
相关产品推荐

