Как определить номер последней версии сборки GAC

2

Я пытаюсь создать журнал диагностики для моего приложения, в котором будет отображаться последний номер версии сборки, установленной в GAC. Например, в GAC есть две версии одной и той же сборки: foo.dll версии 1.0.0.0 и foo.dll версии 2.0.0.0. Мне нужна функция, подобная следующей:

GetLatestGacVersion("foo.dll");  // returns "2.0.0.0"

Кто-нибудь знает лучший способ сделать это?

Спасибо!

  • 0
    Что вы собираетесь делать с данными в «диагностическом журнале»? Этот тип вещей на самом деле не тот, с которым вам следует иметь дело во время выполнения; и если вы обнаружите, что это действительно так, вы можете попробовать программу просмотра журнала fusion (fuslogvw)
  • 0
    В GAC есть сборки, которые использует мое приложение. Я пытаюсь заставить приложение напечатать номер последней версии этой сборки на экране журнала / диалогового окна в целях технической поддержки. Похоже, что устаревший метод LoadWithPartialName соответствует этим минимальным требованиям.
Теги:
.net-2.0
gac

2 ответа

4
Лучший ответ

Самый простой способ:

Assembly a = Assembly.LoadWithPartialName ("foo.dll");
return a.GetName ().Version

который автоматически предоставит вам последнюю версию сборки из GAC.

Обратите внимание, что метод устарел по уважительным причинам. Просить о неспецифической версии GAC, возможно, вызовет множество проблем.

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

  • 0
    Чтобы уточнить: я не пытаюсь сделать что-то большее, чем то, что задает вопрос, а именно: найти номер последней версии сборки GAC, чтобы ее можно было зарегистрировать. Я осторожен, так как это устаревший метод. Тем не менее, я думаю, что мое приложение безопасно, потому что я не буду использовать объект Assembly, возвращенный методом LoadWithPartialName () для чего-либо еще. Из MSDN: «Этот метод сначала вызывает Load. Если сборка не найдена, этот метод возвращает сборку из глобального кэша сборок с таким же простым именем и самым высоким номером версии». Большое спасибо!
3

Используя управляемый обертку вокруг Fusion API (fusion.dll), вы можете перечислить сборки в GAC, отфильтровать их по имени и порядок по версии.

  • 0
    По общему признанию, это - вероятно более правильный способ выполнить мою задачу. Однако устаревший метод LoadWithPartialName, по-видимому, удовлетворяет моим минимальным требованиям в большинстве случаев с одной строкой кода и без взаимодействия COM. Большое спасибо за совет!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню