Добро пожаловать в мой блог! Изначально он не задумывался как блог CRM разработчика, но жизнь сама внесла нужные коррективы. Тут я публикою все свои наблюдения относительно обозначенных в заголовке систем. Если Вы найдете в нем что-то интересное для Вас, как для заказчика, то буду рад сотрудничать с Вами! В моей компетенции 100% задач по MS CRM 3.0/4.0/2011:
MVP 2010, 2011
- Консалтинг
- Проектирование
- Разработка
- Обучение
MVP 2010, 2011
Отладка плагинов, которая не вредит нервной системе
Запись от Артем Enot Грунин размещена 16.04.2012 в 14:37
Обновил(-а) Артем Enot Грунин 23.04.2012 в 11:42
Обновил(-а) Артем Enot Грунин 23.04.2012 в 11:42
Теги debug, development, plugin, visual studio
Появление CRM Developer Toolkit существенно облегчило жизнь разработчику. Львиная доля механических задач по обновлению файлов сборок и веб ресурсов теперь выполняется автоматически. Не автоматизированы, по сути, остались только операции публикации изменений и подключения отладчика.
Как и куда цепляться отладчиком, и какие настройки при этом нужно выполнить, детально описано в SDK: Debug a Plug-In. Если кратко, любой из процессов выполняющих плагин, запускается в каталоге \bin\assembly сервера системы, куда нужно положить файл символов отладчика, чтобы можно было подключиться к процессу.
Для того, чтобы после каждой сборки файл символов обновлялся автоматически, я использую небольшой скрипт командной строки на Post-Build Event. Скрипт необходимо прописать в настройках каждого проекта плагина или шага рабочего процесса, который вы собираетесь отлаживать:
Единственная операция которую придется выполнять вручную - это подключение к процессу.
p.s. В случае с отладкой веб ресурсов, так же потребуется публиковать изменения после развертывания пакета. В системных файлах Developer Toolkit уже есть заглушки для запуска дополнительных сценариев после различных событий в этом средстве. Сейчас они помечены как "TODO", но в следующих версиях, я надеюсь, мы получим искомый функционал.
Как и куда цепляться отладчиком, и какие настройки при этом нужно выполнить, детально описано в SDK: Debug a Plug-In. Если кратко, любой из процессов выполняющих плагин, запускается в каталоге \bin\assembly сервера системы, куда нужно положить файл символов отладчика, чтобы можно было подключиться к процессу.
Для того, чтобы после каждой сборки файл символов обновлялся автоматически, я использую небольшой скрипт командной строки на Post-Build Event. Скрипт необходимо прописать в настройках каждого проекта плагина или шага рабочего процесса, который вы собираетесь отлаживать:
Код:
xcopy "$(TargetDir)$(TargetName).pdb" "C:\Program Files\Microsoft Dynamics CRM\server\bin\assembly" /d /y
Единственная операция которую придется выполнять вручную - это подключение к процессу.
p.s. В случае с отладкой веб ресурсов, так же потребуется публиковать изменения после развертывания пакета. В системных файлах Developer Toolkit уже есть заглушки для запуска дополнительных сценариев после различных событий в этом средстве. Сейчас они помечены как "TODO", но в следующих версиях, я надеюсь, мы получим искомый функционал.
Всего комментариев 7
Комментарии
-
Запись от Konstantin Katsovich размещена 16.04.2012 в 22:04 -
Я использовал этот подход в прошлом, во времена 4.0, но, если не ошибаюсь, система использует сборку в каталоге assembly, даже если при регистрации указать размещение в базе данных. В итоге билд не мог обновить сборку в выходном каталоге, так как она была блокирована процессом. Возможно я не прав, нужно провести эксперимент. В любом случае, что-то заставило меня искать альтернативу.
Запись от Артем Enot Грунин размещена 16.04.2012 в 23:08 -
Запись от Konstantin Katsovich размещена 16.04.2012 в 23:21 -
Плагин бывает разный, так что перезапуск процесса - это не всегда iisreset. Иногда это перезапуск асинхронного сервиса, сервиса песочницы или сервиса хоста (для экзотической породы офлайн плагинов). Безусловно все это можно делать из командной строки, но... По мне проще в базу залить - система сама разберется что дальше делать.
Запись от Артем Enot Грунин размещена 17.04.2012 в 17:57 -
Запись от a33ik размещена 21.04.2012 в 17:30 -
Запись от Артем Enot Грунин размещена 23.04.2012 в 11:43 -
Цитата:
Выход - копирование.Запись от Артем Enot Грунин размещена 30.09.2012 в 15:59