AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.11.2008, 08:50   #1  
Alexandr Zhuravlev is offline
Alexandr Zhuravlev
Участник
 
16 / 10 (1) +
Регистрация: 10.11.2008
Адрес: Питер
? CRM4, плагины и сборки.
Доброе время суток.

Занимаюсь CRM недавно, в основном пишу плагины. Когда сборка с плагинами самодостаточна все более или менее понятно. Но рано или поздно возникает необходимость вынести какие-то базовые вещи в отдельную сборку (назовем ее базовой), на которую уже добавляется референс из других сборок с плагинами.
И тут возникает неприятный момент - поскольку, как я сказал, занимаюсь CRM недавно, базовая сборка также постоянно меняется и дополняется. Соответственно, при обновлении плагина на сервере, базовую сборку также нужно переписывать на сервер и перегистрировать ее в GAC. Но неприятность не в этом, а в том, что каждый раз нужно reset'ить IIS, иначе dll-ку с базовой сборкой не заменить.
Я попробовал отказатьяс от GAC и грузить сборку в плагине через AssemblyResolve по фиксированному пути, но это, естественно, не помогло - dll-ка также блокируется.
Потом я попробовал грузить файл в byte[] и оттуда уже грузить сборку. Теперь dll-ка не блокируется - ее даже можно удалить и все работает до перезапуска IIS, но в этом-то и проблема. Сервер не грузит новую версию поскольку у него уже в памяти есть старая и единственный выход - опять рестартить IIS. Смысл извращений теряется.

Я в курсе что выгрузить отдельную dll вроде как нельзя - нужно выгружать весь AppDomen, в который она загружена. Но при обновлении плагина через тот же Plugin Registration Tool как то это происходит (возможно там и выгружается AppDomen - но почему тогда при этом не выгружается базовая сборка, которая по идее должна быть в том же домене что и сборка с плагинами?)

В общем просьба поделиться опытом - может кто-то справился с подобным.

PS. Знаю про ILMerge - но пользоваться ей не хочу. В сборке с плагинами создавать новый AppDomen и туда динамически грузить базовую тоже не хочу, поскольку это чревато неоправданным усложнением - хочется просто добавить референс и наследоваться скажем от базовых классов.

PPS. Плохо что в C# нет чего-то типа статически линкуемой библиотеки. Или я просто не знаю как это сделать?
__________________
"Hello World!" 17 errors, 31 warnings
Старый 11.11.2008, 10:04   #2  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Насколько мне известно, проблему обойти невозможно (малой кровью, по крайней мере). Если "базовая сборка" не содержит базовых (родительских) типов, а только хелперы или утилиты, то ее можно загружать по рефлексии и тогда обновление должно происходить без проблем. Для отладки такой метод вполне подходит, но перед развертыванием сборку все равно придется переделывать, что снова породит отладку.
Я думаю проще завести тестовый сервер и безнаказанно его перезагружать так часто, как это требуется.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 11.11.2008, 10:42   #3  
Alexandr Zhuravlev is offline
Alexandr Zhuravlev
Участник
 
16 / 10 (1) +
Регистрация: 10.11.2008
Адрес: Питер
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
Я думаю проще завести тестовый сервер и безнаказанно его перезагружать так часто, как это требуется.
Да так собственно и сделано, но все равно это напрягает. Кроме того, готовые плагины переодически заливаются на рабочий. Его дергать лишний раз вообще не хочется
__________________
"Hello World!" 17 errors, 31 warnings
Теги
assembly, crm, plugin, crm4

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Насколько опасны плагины Evgenia_f Dynamics CRM: Разработка 8 12.11.2008 11:21
Установка CRM4 Outlook Client с автономным доступом Lazarus Dynamics CRM: Администрирование 4 28.08.2008 15:42
Microsoft Dynamics CRM Team Blog: CRM4 Outlook Client – Issues and Fixes Blog bot Dynamics CRM: Blogs 0 07.08.2008 01:05
Добавление пользователей в CRM4 AlexsSDa Dynamics CRM: Администрирование 22 14.07.2008 11:21
Как указать конфиг файл для сборки-коллаута sam Dynamics CRM: Разработка 1 11.01.2007 23:08

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 07:43.