【问题标题】:CRM using ILMerge to merge framework library with plugin projectsCRM 使用 ILMerge 将框架库与插件项目合并
【发布时间】:2021-03-26 11:02:48
【问题描述】:

我有两个程序集:

  1. 主插件程序集 - 用于我的项目的插件
  2. 框架程序集 - 我想将此程序集与主插件合并,这样我就可以重用在不同项目中经常使用的一些常用方法。

我在主插件程序集上安装了 ILMerge,并引用了构建的框架 dll,同时在解决方案上设置项目构建顺序。

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

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

上面提到的所有项目都存在于同一个解决方案中。

我对 ILMerge 还很陌生,所以可能会做一些非常明显的错误。我只是使用内置的 Visual Studio 编译器进行编译。

谁能指出可能出了什么问题?

【问题讨论】:

    标签: plugins dynamics-crm ilmerge fakexrmeasy


    【解决方案1】:

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

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

    <?xml version="1.0" encoding="utf-8" ?>
    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <Target Name="ILRepacker" AfterTargets="Build">
        <ItemGroup>
          <InputAssemblies Include="$(OutputPath)$(TargetName)$(TargetExt)" />
          <InputAssemblies Include="$(OutputPath)YourFramework.dll" />
        </ItemGroup>
        <ILRepack
            Parallel="true"
            Internalize="false"
            InternalizeExclude="@(DoNotInternalizeAssemblies)"
            InputAssemblies="@(InputAssemblies)"
            LibraryPath="$(OutputPath)"
            Wildcards="false"
            TargetKind="SameAsPrimaryAssembly"
            DebugInfo="false"
            KeyFile="YourCompany.snk"
            OutputFile="$(OutputPath)Merged\$(AssemblyName).dll"
            LogFile="$(OutputPath)Merged\ILRepack.log"
        />
      </Target>
    </Project>
    

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

    【讨论】:

      【解决方案2】:

      只要您拥有框架程序集的所有代码,一种选择是使用Visual Studio Shared Project

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

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

      另一种选择是将框架源文件as links 添加到插件项目中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-09
        • 1970-01-01
        相关资源
        最近更新 更多