【问题标题】:Multiple projects into single dll多个项目到单个 dll
【发布时间】:2018-01-26 14:08:57
【问题描述】:

问题: 我们使用 CRM 插件注册工具来更新之前运行良好的程序集。然后我们开始得到

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

详情:组装项目引用同一解决方案中的另一个项目:

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

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

  • 工作程序集:项目 1 源代码存在在程序集中作为 命名空间(无 dll)(由离开的老开发人员完成)
  • Bad/Error Assembly:Project 1 作为引用(dll 文件)存在。

问:如何在我的代码/VS 中实现与工作程序集相同的行为?

如果有帮助: 我们使用 Dynamics CRM 2016 On-Premise、ILMerge、Visual Studio 2015

注意:

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

  • 我们将程序集部署到 CRM 中:非沙盒和数据库

【问题讨论】:

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


    【解决方案1】:

    忘记旧的开发人员的东西。你正在做的是完美的。这是我的建议。

    忘记旧的开发人员的东西。

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

    你做的很完美。

    在项目 2 中添加对项目 1 dll 的引用
    执行 ILMERGE 并在 PRT 中注册此新程序集。
    无需更改任何其他内容。

    您可能需要follow my answer 进行技巧拍摄以避免重新注册步骤。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-22
        • 2020-01-11
        • 2011-09-28
        • 1970-01-01
        相关资源
        最近更新 更多