Dev转Prod部署失败:同名Schema列类型不匹配且存在无法移除的依赖
Dynamics 365 解决方案部署依赖与列类型冲突问题解决办法
核心问题梳理
- 原查找列在非托管解决方案中删除后,误创建同名新列,Dynamics自动生成相同架构名,导致托管解决方案导入生产环境时,出现架构名对应的数据类型不匹配报错
- 删除开发环境中的冲突列时,表单依赖无法彻底清除,导致删除操作失败
分步解决方案
1. 彻底清理表单的显性与隐性依赖
- 切换到表单的经典编辑器(现代编辑器可能无法显示全部关联依赖)
- 逐一检查以下区域:
- 主表单的所有标签页、节,确认该列已完全移除
- 表单的业务规则:排查是否有引用该列的规则,如有则删除或修改规则逻辑
- 表单的JavaScript脚本:检查脚本中是否通过架构名调用该列,移除相关代码片段
- 关联视图:确认快速查找视图、实体关联视图等所有视图中未包含该列
- 保存并发布表单后,再次尝试删除该列
2. 排查其他隐藏依赖对象
除表单外,还需检查以下可能的依赖来源:
- 插件/自定义工作流活动:查看代码中是否引用该列的架构名
- Web资源:检查HTML、JS等资源中是否调用了该列
- 报表:确认所有系统或自定义报表未使用该列
- 安全角色:排查是否有针对该列的权限配置项
- 邮件模板/自动回复规则:检查模板内容是否引用了该列
3. 通过Power Platform CLI强制清理(谨慎操作)
若手动清理依赖后仍无法删除,可尝试使用Power Platform CLI工具:
- 登录开发环境:
pac auth create --url https://你的开发环境域名.crm.dynamics.com - 导出包含冲突列的非托管解决方案:
pac solution export --name 解决方案名称 --path ./exported-sol.zip --managed false - 解压导出包,编辑
customizations.xml文件,通过架构名找到对应列的节点并删除 - 重新打包解决方案:
pac solution pack --zipfile ./modified-sol.zip --folder ./解压后的解决方案文件夹 - 将修改后的非托管解决方案导入开发环境覆盖原方案,之后再尝试删除列
4. 最后手段:提交Microsoft支持工单
如果上述方法均无效,说明存在平台级隐藏依赖或缓存问题,需提交Microsoft支持工单,提供以下信息:
- 环境ID、解决方案名称
- 冲突列的架构名、原数据类型与新数据类型
- 已执行的排查步骤及结果
内容的提问来源于stack exchange,提问作者Carl Sagan
相关产品推荐
相关产品推荐

