Показать сообщение отдельно
Старый 02.12.2015, 11:26   #4  
Артем 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
Вся суть решений не в том, как они выгружаются, а как работают в системе куда они установлены. Пара значений Издатель + Решение определяет такую вещь, как зависимости между компонентами + их управляемые свойства. Удаление управляемого решения, действительно приводит к удалению зависимостей и самих компонент, если они не используются другим решением (например стандартным решением).
Если нужна простая аналогия, то управляемое решение - это гвозди в коробке, а не управляемое - гвозди на лопате.

По моим ощущениям, для переноса из среды разработки в производственную лучше использовать управляемое решение. Так компоненты не будут "разбегаться". Если нужно что-то быстро запатчевать, можно быстро накатить сверху маленькое неуправляемое решение от того же издателя. После этого, нормальный апдейт управляемого решения с теми же компонентами "отберет" нужные зависимости у решения по умолчанию и ваше управляемое решение снова будет целым.

Я рекомендую следующую практику: нужно иметь отдельные решения для основных компонент решения:
  1. Кастомизации и локализация
  2. Права доступа (частые плавающие правки)
  3. Сборки и бизнес-логика (плагины)
  4. Рабочие процессы (имеют специфику активации при установке)
  5. Отчеты
Для последних трех решений очень важна та самая возможность удаления решения в ад. Дело в том, что обновление решения - это всегда сумма компонент. Если вы что-то удалили из своего пакета, в принимающей системе это что-то все равно останется. Например, имеем ситуацию, когда вы объединили несколько отчетов, пересмотрели процессы или отказались от какой-то бизнес-логики в пользу другого решения. Через неуправляемое решение вы накатите новые компоненты поверх старых и вам придется вручную вычищать лишнее. Иными словами появятся новые процессы и обработчики, но и старые продолжат работать. Поэтому бывает удобно снести старую версию решения со всем этим хозяйством и развернуть новую. По сути - переустановить решение. При этом, вы сохраняете возможность обновить минорную версию. Красота. Но только очень важно, чтобы ваши решения не имели лишних зависимостей, чтобы вместе с процессами не снести случайно какую-то сущность вместе с таблицей в БД.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
За это сообщение автора поблагодарили: Eugene.Ostroukhov (1).