Не удалось развернуть плагины в MS CRM 2013 с помощью ILMerge

Я разработал один плагин для локальной версии 2013 года (PreCreateOpportunityProduct - ничего особенного). В своем решении для Visual Studio CRM я добавил проект (называемый BusinessLogic), который включает в себя мои созданные Entities.cs, а также частичные классы для каждой сущности. Поэтому я могу инкапсулировать логику для одного специального права в одном отдельном классе. Ничего страшного. Теперь я хочу использовать эту логику, поэтому я добавляю ссылку на проект в свой проект плагина. Я знаю, что мне нужно объединить все необходимые библиотеки DLL в одну, поэтому я добавил событие после сборки, чтобы объединить все библиотеки DLL с ILMerge.

Обзор решения / проекта с использованием используемых DLL:

обзор решения

Команда после сборки выглядит следующим образом:

mkdir "$(TargetDir)Merged" 
"$(SolutionDir)Libs/ilmerge.exe" /keyfile:"$(ProjectDir)keypair.snk" /target:library /copyattrs /targetplatform:v4,"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0" /out:"$(TargetDir)Merged\Flag.Plugins.dll" "$(TargetDir)Flag.Plugins.dll" "$(TargetDir)BusinessLogic.dll" "$(TargetDir)Microsoft.Crm.Sdk.Proxy.dll" "$(TargetDir)Microsoft.Xrm.Sdk.dll"
del "$(TargetDir)*.*" /Q
move "$(TargetDir)Merged\*.*" "$(TargetDir)"

RegisterFile.crmregister:

<?xml version="1.0" encoding="utf-8"?>
<Register xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/crm/2011/tools/pluginregistration">
  <Solutions>
    <Solution Assembly="Flag.Plugins.dll" Id="f4dff197-5b7a-e411-80c3-005056ba5a51" IsolationMode="None" SourceType="Database">
      <PluginTypes>
        <Plugin Description="Plug-in to PreOpportunityProductCreate" FriendlyName="PreOpportunityProductCreate" Name="Flag.Plugins.PreOpportunityProductCreate" Id="0f7bd0bc-2b7b-e411-80c3-005056ba5a51" TypeName="Flag.Plugins.PreOpportunityProductCreate">
          <Steps>
            <clear />
            <Step CustomConfiguration="" Name="PreOpportunityProductCreate" Description="Pre-Operation of Opportunity Product Create" Id="107bd0bc-2b7b-e411-80c3-005056ba5a51" MessageName="Create" Mode="Synchronous" PrimaryEntityName="opportunityproduct" Rank="1" SecureConfiguration="" Stage="PreInsideTransaction" SupportedDeployment="ServerOnly">
              <Images />
            </Step>
          </Steps>
        </Plugin>
      </PluginTypes>
    </Solution>
  </Solutions>
  <XamlWorkflows />
</Register>

Примечание: я администратор развертывания + системный администратор -> все разрешения

Когда я нажимаю Развернуть в проекте CrmPackage, ошибка

Error registering plugins and/or workflows. Plug-in assembly does not contain the required types or assembly content cannot be updated. C:\Program Files (x86)\MSBuild\Microsoft\CRM\Microsoft.CrmDeveloperTools.CrmClient.targets

Примечание 2: Когда я внедряю plugin.dll без объединения всех других DLL, развертывание работает как чудо, но плагин выдает исключение, потому что BusinessLogic.dll не известен.

Кто-нибудь может мне помочь с этим вопросом?

заранее спасибо

1 ответ

Решение

Я обнаружил проблему: я сливал слишком много файлов! Подробно: это были Microsoft.Crm.Sdk.Proxy.dll и Microsoft.Xrm.Sdk.dll. Эти библиотеки уже находятся в GAC сервера crm. После удаления этих файлов из моей команды ilmerge развертывание наконец работает.

Вот ссылка, которая дала мне важные советы: https://community.dynamics.com/crm/f/117/p/146347/326928.aspx

Другие вопросы по тегам