Plugins CRM使用ILMerge将框架库与插件项目合并

Plugins CRM使用ILMerge将框架库与插件项目合并,plugins,dynamics-crm,ilmerge,fakexrmeasy,Plugins,Dynamics Crm,Ilmerge,Fakexrmeasy,我有两个集会: 主插件程序集-用于我的项目的插件 框架程序集-我想将此程序集与主插件合并,以便可以重用在不同项目中大量使用的一些常用方法 我在主插件程序集上安装了ILMerge,并引用了内置框架DLL,同时在解决方案上设置项目构建顺序 现在,在我部署之前,这看起来还可以。当我尝试使用我的单元测试项目进行调试时,主要问题出现了 在我的单元测试项目中,我引用了主插件程序集,它允许我使用fakexrmeasy来运行单元测试。然而,现在程序集已经合并,我希望我能够在我的单元测试项目中使用框架方法。在测试

我有两个集会:

  • 主插件程序集-用于我的项目的插件
  • 框架程序集-我想将此程序集与主插件合并,以便可以重用在不同项目中大量使用的一些常用方法
  • 我在主插件程序集上安装了ILMerge,并引用了内置框架DLL,同时在解决方案上设置项目构建顺序

    现在,在我部署之前,这看起来还可以。当我尝试使用我的单元测试项目进行调试时,主要问题出现了

    在我的单元测试项目中,我引用了主插件程序集,它允许我使用fakexrmeasy来运行单元测试。然而,现在程序集已经合并,我希望我能够在我的单元测试项目中使用框架方法。在测试类中引用主插件程序集时,我似乎无法访问这些方法

    上述所有项目都存在于同一个解决方案中

    我对ILMerge还很陌生,所以很明显我可能做错了什么。我只是使用内置的VisualStudio编译器进行编译


    有人能告诉我出了什么问题吗?

    首先,我的建议是使用ILRepack,因为ILMerge不再被积极维护。ILRepack基于ILMerge,是开源的。将NuGet包
    ILRepack.Lib.MSBuild.Task
    添加到项目中

    然后将此文件添加到项目中,并将其命名为
    ILRepack.targets

    
    

    注意:根据此配置,合并的dll将在名为“merged”的单独文件夹中创建。这是您在Dynamics 365上注册的库。您的单元测试应该只使用插件项目的常规构建输出。

    首先,我的建议是使用ILRepack,因为ILMerge不再被积极维护。ILRepack基于ILMerge,是开源的。将NuGet包
    ILRepack.Lib.MSBuild.Task
    添加到项目中

    然后将此文件添加到项目中,并将其命名为
    ILRepack.targets

    
    

    注意:根据此配置,合并的dll将在名为“merged”的单独文件夹中创建。这是您在Dynamics 365上注册的库。您的单元测试应该只使用插件项目的常规构建输出。

    只要您拥有框架程序集的所有代码,一个选项就是使用插件

    将框架代码放入共享项目将允许您将插件和框架代码编译到单个程序集中,而无需任何其他工具

    在中,我介绍了我通常如何使用共享项目使插件逻辑可以从插件程序集和控制台应用程序中访问以进行测试/调试


    另一个选项是将框架源文件添加到插件项目。

    只要您拥有框架程序集的所有代码,一个选项就是使用

    将框架代码放入共享项目将允许您将插件和框架代码编译到单个程序集中,而无需任何其他工具

    在中,我介绍了我通常如何使用共享项目使插件逻辑可以从插件程序集和控制台应用程序中访问以进行测试/调试

    另一个选择是将框架源文件添加到插件项目中