Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DLL Version, retreive 
:(
    Опции темы
Prehistorik
  Дата 23.8.2006, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 30.5.2006
Где: СПб

Репутация: 2
Всего: 3



Задача такая. Програмно находим путь и имя Dll библиотеки. Потом надо взять ВЕРСИЮ этой DLL. Как это сделать?
Я вычитал, что у каждой DLL есть метод DllGetVersion. Я умею врапить dll методы... но только из заранее определённых библиотек. А как "на лету" поднять dll в C#?
--------------------
Есть только один бог - Ассемблер, и С - пророк его. 
PM MAIL   Вверх
reloni
Дата 23.8.2006, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 10.5.2006
Где: Москва

Репутация: 3
Всего: 4



Код

    Assembly asm = Assembly.LoadFile("путь к сборке");
    AssemblyName name = asm.GetName();
    Console.WriteLine(name.Version.ToString());


Вроде то, что нужно.
PM MAIL ICQ   Вверх
ivashkanet
Дата 23.8.2006, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



reloni, а если dll не .Net-овская?
PM MAIL WWW ICQ   Вверх
reloni
Дата 23.8.2006, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 10.5.2006
Где: Москва

Репутация: 3
Всего: 4



ivashkanet, а вот мне самому интересно, как тогда быть.
PM MAIL ICQ   Вверх
Prehistorik
Дата 23.8.2006, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 30.5.2006
Где: СПб

Репутация: 2
Всего: 3



reloni, да уж... нетовскую ассемблю легко проверить на версию...

ivashkanet, как всегда - угадываешь мои желания ))

Всем! Я нашёл то что мне хотелось. А именно мне вполне достаточно версии самого файла. Делается через 
Код

System.Diagnostics.FileVersionInfo


Однако вопрос про Dll остаётся открытым.....
--------------------
Есть только один бог - Ассемблер, и С - пророк его. 
PM MAIL   Вверх
ivashkanet
Дата 23.8.2006, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(Prehistorik @  23.8.2006,  12:43 Найти цитируемый пост)
Однако вопрос про Dll остаётся открытым.....

Ага: Можно ли в рантайме создать .Net обертку под не .Net dll?
Скорее всего нет, ведь студия создает эту обертку в виде отдельного файла. А поступать так п рантайме нецелесообразно, ИМХО.
Цитата(Prehistorik @  23.8.2006,  12:43 Найти цитируемый пост)
ivashkanet, как всегда - угадываешь мои желания ))

Prehistorik,   smile


PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 23.8.2006, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Prehistorik @  23.8.2006,  10:24 Найти цитируемый пост)
Я вычитал, что у каждой DLL есть метод DllGetVersion.

Не у каждой DLL есть этот метод. Цитата мсдн:

Цитата
Implemented by many of the Microsoft Windows Shell dynamic-link libraries (DLLs) to allow applications to obtain DLL-specific version information.

..

This function is not an application programming interface (API). It is exported by name from each DLL that implements it. Currently, most of the Windows Shell and common controls DLLs implement DllGetVersion. These include, but are not limited to, Shell32.dll, Comctl32.dll, Shdocvw.dll, and Shlwapi.dll.

To call this function, use the LoadLibrary and GetProcAddress functions to obtain the function pointer. The DLLGETVERSIONPROC type is used as the data type for the function pointer. This type definition is used to define a pointer to a DllGetVersion function. This pointer is used when calling the function dynamically by loading the library and getting the function's address. See Shell and Common Controls Versions for a detailed discussion of Shell and common controls versions, and how to use DllGetVersion.



--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0551 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.