Чтобы найти версию файла dll

Я хочу найти версию DLL, когда указан путь. Предположим, путь = "progfiles/harry/sample.dll". Как найти версию sample.dll. Поскольку я использую.net Framework 3.5 SP1, я не могу использовать FileVersionInfo. Я попробовал Assembly.LoadFrom. Но проблема, с которой я сталкиваюсь с LoadFrom: "Если сборка с таким же идентификатором уже загружена, LoadFrom возвращает загруженную сборку, даже если указан другой путь".

3 ответа

В любом случае, вы можете просто загрузить свою сборку в другой домен приложений.

var domain = AppDomain.CreateDomain("tmp");
var version = domain.Load().GetName(path).Version;

РЕДАКТИРОВАТЬ:

Вы ориентируетесь на Windows CE, поэтому можете использовать функцию GetFileVersionInfo.

Вот полный пример кода, как использовать эту функцию из.Net/C#.

Ты можешь использовать AssemblyName:

var assemblyName = AssemblyName.GetAssemblyName(assemblyPath);
System.Diagnostics.Debug.WriteLine(assemblyName.Version);

Пример кода для поиска версии библиотеки DLL:

Version ver = Assembly.LoadFrom("Library.dll").GetName().Version;

Редактировать 1: ОК, для получения уже выполняющейся сборки вы можете попробовать этот пример:

Assembly SampleAssembly;
SampleAssembly = Assembly.GetAssembly(ObjectLoadedFromDLL.GetType());
Version ver = Assembly.GetExecutingAssembly().GetName().Version;

И ссылки на MSDN это полная документация этого метода: Assembly.GetExecutingAssembly Метод

Другие вопросы по тегам