Не удалось развернуть плагины в 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