如何将引用的程序集合并到 Dynamics CRM 插件的单个 .dll 中?

How can I merge referenced assembly into single .dll for Dynamics CRM plugin?

为了将第三方 .dll 合并到自定义 Dynamics CRM 插件 (.dll) 中,我已按照我能找到的与 ILMerge 相关的所有指南进行操作,以便我可以使用该功能。

我正在编写一个 Dynamics CRM 插件,它将获取一个 .docx 文档,填充一些信息,并向关联的实体添加注释(注释)。检索文档模板并创建注释工作正常。所以,我知道我的插件是正确的(注册并运行正常)。

但是,当我尝试使用 DocumentFormat.OpenXml 来操作我的文档模板时,我收到 Dynamics CRM 的错误:

Could not load file or assembly 'DocumentFormat.OpenXml, Version=2.5.5631.0......."

经过一些研究,我发现我需要 "merge" 将 DocumentFormat.OpenXml.dll 放入我的插件 .dll。

我在 VS2015 中安装了 MSBuild.ILMerge.Task(和 ILMerge)。在构建过程中,我现在收到两条消息 "Transitive merge" 和 "Merged assemblies: pathname\my.dll; pathname\DocumentFormat.OpenXml.dll"。它似乎做了我需要的。但是,当我使用新的 .dll 更新插件时,我得到相同的“无法加载文件或程序集”错误消息。

我找不到任何文档可以进一步帮助确保我引用的 DocumentFormat.OpenXml.dll 实际上合并到我的目标 .dll 中。

I am unable to find any documentation that could further help in ensuring that my referenced DocumentFormat.OpenXml.dll actually gets merged into my target .dll.

您可以使用任何反编译器(例如:dotPeek)来查看合并后的 dll 的内容并进行验证。

when I update the plugin with the new .dll, I get the same "Could not load file or assembly" error message.

不是更新 PRT 中的现有插件,而是注销现有插件并使用合并的 dll 注册新程序集。