Вся суть решений не в том, как они выгружаются, а как работают в системе куда они установлены. Пара значений Издатель + Решение определяет такую вещь, как зависимости между компонентами + их управляемые свойства. Удаление управляемого решения, действительно приводит к удалению зависимостей и самих компонент, если они не используются другим решением (например стандартным решением).
Если нужна простая аналогия, то управляемое решение - это гвозди в коробке, а не управляемое - гвозди на лопате.
По моим ощущениям, для переноса из среды разработки в производственную лучше использовать управляемое решение. Так компоненты не будут "разбегаться". Если нужно что-то быстро запатчевать, можно быстро накатить сверху маленькое неуправляемое решение от того же издателя. После этого, нормальный апдейт управляемого решения с теми же компонентами "отберет" нужные зависимости у решения по умолчанию и ваше управляемое решение снова будет целым.
Я рекомендую следующую практику: нужно иметь отдельные решения для основных компонент решения:
- Кастомизации и локализация
- Права доступа (частые плавающие правки)
- Сборки и бизнес-логика (плагины)
- Рабочие процессы (имеют специфику активации при установке)
- Отчеты
Для последних трех решений очень важна та самая возможность удаления решения в ад. Дело в том, что обновление решения - это всегда сумма компонент. Если вы что-то удалили из своего пакета, в принимающей системе это что-то все равно останется. Например, имеем ситуацию, когда вы объединили несколько отчетов, пересмотрели процессы или отказались от какой-то бизнес-логики в пользу другого решения. Через неуправляемое решение вы накатите новые компоненты
поверх старых и вам придется вручную вычищать лишнее. Иными словами появятся новые процессы и обработчики, но и старые продолжат работать. Поэтому бывает удобно снести старую версию решения со всем этим хозяйством и развернуть новую. По сути - переустановить решение. При этом, вы сохраняете возможность обновить минорную версию. Красота. Но только очень важно, чтобы ваши решения не имели лишних зависимостей, чтобы вместе с процессами не снести случайно какую-то сущность вместе с таблицей в БД.