2015-06-14 2 views
4

У меня есть проект, который отлично работает на 4.0, однако в интересах использования нового класса ZipFile я решил настроить таргетинг на 4.5. Подавляющее большинство моих пользователей будет установлено на 4.5+, но не исключено, что кто-то с 4.0 может прийти и попытаться использовать мое программное обеспечение.Специальная совместимость приложения .NET 4.5 в системе с .NET 4.0

Поскольку он отлично работает на 4.0, за исключением класса ZipFile, я могу настроить таргетинг на 4.5, а если обнаружен 4.0, он просто отключает эту конкретную кодовую страницу и продолжает нормально работать во всех других аспектах?

Предположим, однако, что я не могу легко сделать способ обратной совместимости (вообще?) Из-за необходимости ссылаться на сборку 4.5, чтобы использовать ZipFile в первую очередь.

На стороне примечания, я уже реализовал обнаружение, какая версия рамки установлена. Я могу легко отключить этот раздел кода, если обнаружено < 4.5.

ответ

2

Самый простой способ сделать это - это, вероятно, динамически загрузить требуемый код.

Вы можете использовать отражение для поиска необходимой сборки, класса и элементов, если обнаружен .NET 4.5. Вы можете кэшировать результаты в делегатах, чтобы избежать отражения каждый раз.

Вы также можете использовать подключаемую систему, в которой ваш плагин, который добавляет поддержку zip-файлов, поддерживает .NET 4.5, но ваше основное приложение предназначено только для .NET 4.0. Затем ваше основное приложение определяет, может ли он загружать подключаемый модуль.

Но то, что вы предложили, ориентируясь на .NET 4.5 и просто избегая возможностей .NET 4.0, я бы очень сильно отговорил. Вы не знаете, какие функции .NET 4.5 будут использоваться неявно, если .NET 4.5 нацелен. Это разбивает многие пакеты NuGet, которые ошибочно устанавливают версию .NET 4.5, когда вам нужна версия 4.0. Это прерывается async. Это, вероятно, ломается намного больше.

+0

Не могу поверить, что я не думал об этом, просто вставляя часть ZipFile в плагин блестяще. Спасибо за помощь. – Sean

0

Создайте две версии .exe (Target 4.0 и 4.5 соответственно). Во время установки обнаружите .Net-версию & извлеките файл .exe, соответствующий версии .net.

Смежные вопросы