【发布时间】:2017-10-11 23:08:03
【问题描述】:
为了将第三方 .dll 合并到自定义 Dynamics CRM 插件 (.dll) 中,我已按照我能找到的与 ILMerge 相关的所有指南进行操作,以便我可以使用该功能。
我正在编写一个 Dynamics CRM 插件,该插件将采用 .docx 文档,填充一些信息,并向关联实体添加注释(注)。检索文档模板并创建注释工作正常。所以,我知道我的插件是健全的(注册和运行正常)。
但是,一旦我尝试使用 DocumentFormat.OpenXml 来操作我的文档模板,我就会收到 Dynamics CRM 的错误:
无法加载文件或程序集 'DocumentFormat.OpenXml, Version=2.5.5631.0......."
经过一番研究,我发现我需要将DocumentFormat.OpenXml.dll“合并”到我的插件.dll 中。
我在 VS2015 中安装了 MSBuild.ILMerge.Task(和 ILMerge)。在构建过程中,我现在收到两条消息“传递合并”和“合并的程序集:路径名\my.dll;路径名\DocumentFormat.OpenXml.dll”。它似乎做了我需要的。但是,当我使用新的 .dll 更新插件时,我会收到相同的“无法加载文件或程序集”错误消息。
我找不到任何可以进一步帮助确保我引用的 DocumentFormat.OpenXml.dll 实际合并到我的目标 .dll 中的文档。
【问题讨论】:
-
不要更新 PRT 中的现有插件,而是取消注册现有的并使用合并的 dll 注册新程序集
-
您可以使用任何反编译器查看合并后的dll内容并进行验证
-
@ArunVinoth,我删除了我的 .dll 并重建了它。我使用 dotPeek 检查 .dll 以确保它包含 DocumentFormat.OpenXml 程序集。然后我在插件注册工具中注销并重新注册了.dll,一切正常!如果您想发布取消注册和重新注册 .dll 的答案,我会标记它。谢谢!
标签: c# dynamics-crm openxml-sdk ilmerge