Как отключить функционал подключенного проекта, если нет его библиотеки

Пример: В решении есть несколько проектов, скажем, Core, Main, Project1, Project2...ProjectN, где:

  • Core - проект библиотеки с базовыми сущностями, расширениями и т.д.
  • Main - проект, который является точкой входа для остальных (конкретно в моем случае это MAUI + Blazor).
  • Project1...N - проекты с отдельным функционалом, к которым подключен проект Core и они уже подключены отдельно к проекту Main (в моем случае это библиотеки для MAUI)

Как вариант вижу сбор разных версий приложения:

  • Базовый (с Главным проектом)
  • Basic1 (с проектом Main + Project1)
  • Basic2 (с проектом Main + Project2)

но это не входит в идею модульности приложения, где можно поставить библиотеку любого проекта из Project1..N через установщик и основное приложение ее подхватит.

Вопрос в том, как отключить видимость кнопок или других элементов управления в Главном проекте, если нет библиотек Project1...N

Как можно реализовать эту систему, при условии, что приложение не будет пересобираться (т.е. не подходит вариант define)


Ответы (2 шт):

Автор решения: user11354240

Если нужно подключать библиотеки на рантайме без перекомпиляции приложения, то я бы использовал MEF: https://learn.microsoft.com/en-us/dotnet/framework/mef/

→ Ссылка
Автор решения: Антон Смирнов

Коротко помогло добавить пакет System.ComponentModel.Composition в основной проект и настроить Import и Export типов данных где нужно. Да не без косяков, но это реально решение. Спасибо, буду улучшать))

→ Ссылка