AXForum  
Вернуться   AXForum > Блоги > CRM, SharePoint и Черная Магия
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

Добро пожаловать в мой блог! Изначально он не задумывался как блог CRM разработчика, но жизнь сама внесла нужные коррективы. Тут я публикою все свои наблюдения относительно обозначенных в заголовке систем. Если Вы найдете в нем что-то интересное для Вас, как для заказчика, то буду рад сотрудничать с Вами! В моей компетенции 100% задач по MS CRM 3.0/4.0/2011:
  • Консалтинг
  • Проектирование
  • Разработка
  • Обучение


MVP 2010, 2011
Оценить эту запись

Отладка плагинов, которая не вредит нервной системе

Запись от Артем Enot Грунин размещена 16.04.2012 в 14:37
Обновил(-а) Артем Enot Грунин 23.04.2012 в 11:42

Появление CRM Developer Toolkit существенно облегчило жизнь разработчику. Львиная доля механических задач по обновлению файлов сборок и веб ресурсов теперь выполняется автоматически. Не автоматизированы, по сути, остались только операции публикации изменений и подключения отладчика.

Как и куда цепляться отладчиком, и какие настройки при этом нужно выполнить, детально описано в 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
Нажмите на изображение для увеличения
Название: postbuild.png
Просмотров: 327
Размер:	16.9 Кб
ID:	216

Единственная операция которую придется выполнять вручную - это подключение к процессу.

p.s. В случае с отладкой веб ресурсов, так же потребуется публиковать изменения после развертывания пакета. В системных файлах Developer Toolkit уже есть заглушки для запуска дополнительных сценариев после различных событий в этом средстве. Сейчас они помечены как "TODO", но в следующих версиях, я надеюсь, мы получим искомый функционал.
Размещено в CRM
Просмотров 88398 Комментарии 7
Всего комментариев 7

Комментарии

  1. Старый комментарий
    Аватар для Konstantin Katsovich
    Тоже самое делается через: Tab Build -> output Path (в нижней части экрана.)

    Так же в Pre-Build можно добавит iisreset
    Запись от Konstantin Katsovich размещена 16.04.2012 в 22:04 Konstantin Katsovich is offline
  2. Старый комментарий
    Аватар для Артем Enot Грунин
    Я использовал этот подход в прошлом, во времена 4.0, но, если не ошибаюсь, система использует сборку в каталоге assembly, даже если при регистрации указать размещение в базе данных. В итоге билд не мог обновить сборку в выходном каталоге, так как она была блокирована процессом. Возможно я не прав, нужно провести эксперимент. В любом случае, что-то заставило меня искать альтернативу.
    Запись от Артем Enot Грунин размещена 16.04.2012 в 23:08 Артем Enot Грунин is offline
  3. Старый комментарий
    Аватар для Konstantin Katsovich
    Дело в том, что я не использую рагистрацию в DB. (одна из причин нужно всё время обновлять сборку).

    А если регистрировать на диске, достаточно скопировать и iisreset.
    Это способ работвет и в 2011.

    Если вспомните причину будет интересно.

    Спасибо.
    Запись от Konstantin Katsovich размещена 16.04.2012 в 23:21 Konstantin Katsovich is offline
  4. Старый комментарий
    Аватар для Артем Enot Грунин
    Плагин бывает разный, так что перезапуск процесса - это не всегда iisreset. Иногда это перезапуск асинхронного сервиса, сервиса песочницы или сервиса хоста (для экзотической породы офлайн плагинов). Безусловно все это можно делать из командной строки, но... По мне проще в базу залить - система сама разберется что дальше делать.
    Запись от Артем Enot Грунин размещена 17.04.2012 в 17:57 Артем Enot Грунин is offline
  5. Старый комментарий
    Аватар для a33ik
    Нашёл ошибочку, старина. В папке копирования не CrmWeb, а Server.
    Запись от a33ik размещена 21.04.2012 в 17:30 a33ik is offline
  6. Старый комментарий
    Аватар для Артем Enot Грунин
    Цитата:
    Сообщение от a33ik Просмотреть комментарий
    Нашёл ошибочку, старина. В папке копирования не CrmWeb, а Server.
    Спасибо! Поправил.
    Запись от Артем Enot Грунин размещена 23.04.2012 в 11:43 Артем Enot Грунин is offline
  7. Старый комментарий
    Аватар для Артем Enot Грунин
    Цитата:
    Сообщение от Konstantin Katsovich Просмотреть комментарий
    Тоже самое делается через: Tab Build -> output Path (в нижней части экрана.)

    Так же в Pre-Build можно добавит iisreset
    Кажется я вспомнил, почему от этого метода пришлось отказаться. Дело в том, что теперь я использую Developer Toolkit, а он умеет принимать сборки только из каталога по умолчанию. Если вы измените Output, встроенный регистратор не сможет обновить сборку. А значит сходит на нет все преимущество от использования средства.
    Выход - копирование.
    Запись от Артем Enot Грунин размещена 30.09.2012 в 15:59 Артем Enot Грунин is offline
 


Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:25.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.