В этом посте я опишу способ отладки плагинов для Microsoft Dynamics CRM 4.0. Студия находится на том же сервере, что и сам сервер MS CRM.
Порядок действий для отладки plug-in
1. Нам необходим plug-in для MS CRM.
2. Выбираем свойства проекта. Properties
3. Вкладка Build – раздел Output path – необходимо выбрать папку assembly у MS CRM. В моем случае это – C:\Program Files\Microsoft Dynamics CRM\Server\bin\assembly\
Сюда будет помещаться dll плагина, а так же файл для отладки . pdb
UPD: Т.к. для отладки необходим только .pdb файл, то этот шаг можно заменить, написав сценарий в Build Events в раздел Post-build event command line вида:
COPY “$(TargetDir)\*.pdb” “C:\Program Files\Microsoft Dynamics CRM\Server\bin\assembly” /Y
(спасибо Сергею за комментарий)
4. Вкладка Build Events в Pre-build event command line указываем: iisreset /stop, в Post-build - iisreset /start. Теперь, перед компиляцией и генерацией dll плагина (build) будет останавливаться IIS-server, потом создаваться dll и pdb файлы, которые помещаются в папку, указанную в п.3, а затем запускаем IIS-server

debug-plugins
5. Делаем Build нашего проекта.
6. Запускаем PluginRegistration tool и регистрируем наш плагин. Выбираем dll из папки п3. (Program Files\Microsoft Dynamics CRM\Server\bin\assembly\)
7. Повторяем ситуацию, на которой должен сработать плагин.
Например: я зарегистрировал плагин на свою сущность, событие – Create, стадия – Pre. Чтобы повторить ситуацию мне достаточно создать записей своей сущности, заполнить необходимые поля и нажать «Сохранить». Аналогично и для других событий
8. Установите Breakpoint там, где это вам необходимо.
9. Итак, ошибку получили, осталось «прицепиться» к IIS, чтобы иметь возможность заняться дебагом.
Для этого: Debug – Attach to Process… – выбираем процесс w3wp.exe и жмем Attach.
Примечание: 1) процессов может быть несколько, цепляемся ко всем 2) если не находите этот процесс, то убедитесь, что выбрана опция «Show processes from all users».

debug-plugins
10. Повторяем п. 7 и занимаемся отладкой плагина в Visual Studio

debug-plugins
Спасибо Савран Роману за помощь
А как отладку делаете Вы? Поделитесь в комментариях.

29.07.2009 в 10:27
В папку assembly ненужно копировать .dll достаточно .pdb:)
29.07.2009 в 10:32
это если вручную, а так немного автоматизирован процесс
29.07.2009 в 13:49
Но файл с расширением .pdb можно и не копировать вручную. Можно написать сценарий в Build Events в раздел Post-build event command line вида:
COPY «$(TargetDir)\*.pdb» «C:\Program Files\Microsoft Dynamics CRM\Server\bin\assembly» /Y
29.07.2009 в 14:01
Спасибо за совет, обновил пост.
Может чем-нибудь еще поделитесь? Буду очень признателен.
29.07.2009 в 15:05
Есть ситуаций когда недостаточно подписаться на процесс w3wp.exe
Например когда асинхронный plug-in то также необходимо подписаться на CrmAsyncService.exe процесс. И если offline plug-in то тогда надо подписаться на Microsoft.Crm.Application.Hoster.exe процесс.
29.07.2009 в 16:31
Спасибо, взял на заметку
11.11.2009 в 09:32
Добрый день.
Скажите пожалуйста, а как реализовать возможность удаленного дебага, т.е. я разрабатываю на одном PC, а MS Dynamics CRM крутится на другом.
11.11.2009 в 09:41
Могу порекомендовать этот пост должно помочь