Dynamics CRM 2011 не может зарегистрировать подключаемый модуль на диске

Я экспериментирую с добавлением плагинов на сервер CRM2011. Следуя шагам примера подключаемого модуля с SDK, все заработало, как и ожидалось. Однако, когда я попытался зарегистрировать плагин на диске (по умолчанию это база данных), я получил

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: Unable to load plug-in assembly.

Похоже, сервер не смог найти файл microsoft.xrm.sdk. Но почему тот же параметр отлично работал при публикации в базу данных?

Я добавил привилегию «запись» пользователю «Сетевая служба» для папки C:\program files\MicrosoftDynamics CRM\Server\bin, но получил такое же сообщение об ошибке.

ОС сервера — Windows 2008 R2, работающая внутри виртуальной машины vmware player.


person Wei Ma    schedule 06.06.2011    source источник
comment
Я задал этот вопрос на social.microsoft. com/Forums/en/crmdevelopment/thread/ и надеемся получить отзывы от инсайдеров Microsoft.   -  person Wei Ma    schedule 06.06.2011


Ответы (4)


Я получил ответ с форума Microsoft. Оказалось, что мне нужно вручную скопировать dll на сервер CRM в CRMINSTLLDIR/Server/bin/assembly, после чего я смогу выполнить регистрацию со своей клиентской машины.

Теперь, когда я знаю эту концепцию, но все еще считаю ее антиинтуитивной. Есть ли причина, по которой Microsoft разработала такой процесс регистрации плагинов? Безопасность?

person Wei Ma    schedule 07.06.2011
comment
У нас была такая же проблема. В итоге мы сделали именно то, что вы сделали. Я тоже не уверен, почему они это сделали. Мы просто поместили его в БД во время разработки (каждая загрузка dll - это боль). - person ryanjones; 09.06.2011

Если вы попытаетесь добавить группу «Все» с полным доступом к папке bin, вы все равно получите ошибку?

person cchamberlain    schedule 06.06.2011
comment
Теперь я добавил Все с полным контролем. Все равно выдает ту же ошибку :( - person Wei Ma; 06.06.2011

Кажется, что после того, как этот выбор был сделан, вы застряли с регистрацией .dll в базе данных CRM, поэтому после этого нельзя начать использовать папку сборки (диск).

Я решил всегда использовать диск при разработке, чтобы можно было быстро обновить только сборку и использовать параметр базы данных только в производственной среде.

person Shane_Yo    schedule 12.07.2013

Если вы действительно хотите развернуть на диск, попробуйте следующее:

  1. Создайте общий ресурс в папке […]/Server/bin/assembly с возможностью чтения/записи только для разработчика. В качестве альтернативы, если у разработчика есть права администратора на сервере, вы можете пропустить этот шаг и просто использовать общий ресурс администратора. Например: \имя_сервера\c$\Program Files\Microsoft Dynamics CRM\Server\bin\assembly

  2. В Visual Studio в разделе меню "Проект/Свойства" в поле Командная строка события после сборки добавьте команду для копирования библиотеки .dll (и .pdb при отладке). Команда копирования должна включать либо имя общего ресурса, созданного на предыдущем шаге, либо путь с использованием admin$.

Кроме того, взгляните на макросы, доступные под кнопкой «Редактировать пост-сборку». Вы найдете некоторые полезные биты, такие как $(TargetFileName) для абстрагирования фактических имен файлов и папок.

Теперь при каждой сборке ваши файлы будут автоматически копироваться на сервер.

Несмотря на то, что я регистрирую свой плагин в базе данных, я использую этот метод постоянно. Если вы хотите выполнить какую-либо удаленную отладку, вам понадобятся файлы .dll и .pdb в папке сборки на сервере.

person Robert M.    schedule 13.02.2014