将多个项目转换为单个dll

时间:2018-01-26 14:08:57

标签: visual-studio-2015 dynamics-crm crm ilmerge

问题: 我们使用CRM插件注册工具来更新之前工作正常的程序集。然后我们开始

Could not load file or assembly "Project 1 version ....Culture.. PublicKeyToken..."

详细信息:在同一解决方案中引用另一个项目的程序集项目:

  • 项目1 (类库 - 将是上述消息中缺少的文件或程序集)
  • 项目2 (程序集要部署):引用项目1

通过比较工作程序集与抛出错误的新程序集(使用dotPeek工具查看dll内容)来深入研究导致该错误的问题后,我们发现了 Project 1 存在于两个集会中。

  • 工作程序集:程序集中存在项目1 源代码 命名空间(没有dll)(由离开的老开发人员完成)
  • 错误/错误汇编:项目1 参考(dll文件)的形式存在。

问:如何在代码/ VS中实现与工作装配相同的行为?

如果有这个帮助: 我们使用Dynamic CRM 2016内部部署,iLMerge,Visual Studio 2015

注意:

  • 我们无法从数据库更改为磁盘或GAC,因为有大量的插件和步骤

  • 我们将程序集部署到CRM中:Non-Sandbox&数据库

2 个答案:

答案 0 :(得分:0)

忘记旧开发者的东西。你在做什么是完美的。这是我的建议。

忘记旧的开发人员。

在插件注册工具中,取消注册旧的程序集(其中单个dll在单个命名空间下同时具有Project 1& 2)

你在做什么是完美的。

在项目2中执行项目1 dll的添加引用 ILMERGE&在PRT注册这个新的组件。
无需改变任何其他内容。

您可能必须follow my answer进行特技拍摄以避免重新注册步骤。

答案 1 :(得分:0)

您需要ILMERGE将您需要的不同dll合并为一个并将该程序集部署到CRM中。

我们通常会设置一个post build事件的powershell脚本,它会在构建完所有dll后直接合并为一个。