Как отключить функционал подключенного проекта, если нет его библиотеки
Пример: В решении есть несколько проектов, скажем, 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 шт):
Если нужно подключать библиотеки на рантайме без перекомпиляции приложения, то я бы использовал MEF: https://learn.microsoft.com/en-us/dotnet/framework/mef/
Коротко помогло добавить пакет System.ComponentModel.Composition в основной проект и настроить Import и Export типов данных где нужно. Да не без косяков, но это реально решение. Спасибо, буду улучшать))