Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > VB .NET > объявление API |
Автор: efedron 11.7.2006, 09:37 | ||||
Господа, подскажите что делаю не так: Мне нужно инициализировать API одного приложения, в документации сказано:
Весь API находится в библиотеке tfdapi8.dll, добавляю ее в референс, потом пишу:
при запуске возникает ошибка: An unhandled exception of type 'System.IO.FileNotFoundException' occurred in system.windows.forms.dll в дополнительной информации: Unhandled Exception: System.IO.FileNotFoundException: File or assembly name tfdapi8, or one of its dependencies, was not found. File name: "tfdapi8" подскажите, в чем проблема? |
Автор: efedron 11.7.2006, 14:13 | ||
ivashkanet,
при компилляции она действительно кладется рядом с моим экзешником, но все равно он ее почему-то не находит тем более, мне нужно, чтоб эта библиотека искалась по тому пути, где она лежит. В свойствах проекта написано: Reference path: C:\Program files\{путь_к_библиотеке} - разве так работать не должно?? |
Автор: ivashkanet 11.7.2006, 14:22 | ||
efedron, не в курсе ![]() Это все что я мог сказать по
|
Автор: efedron 11.7.2006, 15:38 |
ivashkanet, ну не знаю, что может быть такое? мож где-то что-то не так делаю? (я в VB.NET - профан) |
Автор: ivashkanet 11.7.2006, 15:53 |
efedron, попробуй положить dll рядом с приложением, что будет А так, вроде, все правильно делаешь ![]() |
Автор: efedron 12.7.2006, 10:31 |
ivashkanet, в общем, заработало, когда я положил приложение в папку с dll (просто там лежат другие dll, которые полльзует объявляемая мной dll) Вопрос в том, как заставить приложение искать tfdapi8.dll по такому пути, где она всегда лежит (c:\Program files\{путь})?? |
Автор: ivashkanet 12.7.2006, 11:05 |
Отлично ![]() Что я могу сказать... Зайди в свойства проекта (правой на проекте в Solution Explorer --> Propertes). Там открой вкладку References и полазь такм А вообще, efedron, вопросы на прямую не касаемые VB лучше задавать в разделе http://forum.vingrad.ru/index.php?showforum=199 |
Автор: DarkDragon 24.8.2006, 19:36 |
VB.NET тебе не даст такого. Так уж устроили разработчики из майкрософта. Вроде так была написанно в кратце об VS.NET на этом же сайте. Типа чтобы одни и те жи названия библиотек не мешались в данной деректории, они подумали целесообразно будет чтобы все библиотеки используемые программой лежали в месте с ней. Хотя System, Windows.Forms, Drawing и т.д. не лежат в месте с программой! А значить возможно? |
Автор: ivashkanet 25.8.2006, 09:03 |
DarkDragon, все системные сборки лежат в GAC (Global Assembly Cache). В нем можно зарегистрировать любую сборку (при наличии у нее строгово имени (Strong name)). P.S. Неужели нельзя ручками указать расположение файла ![]() |
Автор: Exception 26.8.2006, 13:24 |
При запуске приложения CLR ищет все библиотеки, на которые есть ссылки, в специальных каталогах: сначала в папке приложения, затем в подпапке с тем же именем, что и у сборки, затем проверяет .config-файл на наличие дополнительных указаний (указания подпапки или URL для загрузки), затем пробует загрузить сборку из GAC. http://msdn.microsoft.com/msdnmag/issues/03/10/BasicInstincts/ |
Автор: DarkDragon 9.10.2006, 01:26 |
ivashkanet А как ему этот Strong name указать? Exception А можно примерчик с .config, а то недогоняю, как указать путь к какой нибудь библиотеке. Еще можно через Reflector. Там вооще круто ![]() |
Автор: ivashkanet 9.10.2006, 08:16 |
Если из VS, то все елементарно: открываем свойства проекта, вкладка Signing. Там выбираешь sign the assembly... Если не из VS, то есть утилита командной строки, идущая вместе с Фрэймворком. P.S. А вообще --- поиск рулит ![]() |
Автор: DarkDragon 9.10.2006, 18:13 |
Наверное это реализуется, начиная с 2005 версии ![]() |
Автор: Exception 11.10.2006, 14:29 | ||
Ты что ![]() ![]() |
Автор: Wanderer2019 11.10.2006, 16:34 |
я недавно поднимал оооочень длинную тему по этому вопросу.... попробуй поиском найти... а dll-ка она .NET`овская? |
Автор: DarkDragon 11.10.2006, 18:07 | ||||||
Я смотрел в Project->Properties, нету тама ни вкладки Signing, и строк с Sign ![]() Там про Assembly, только Wrapper Asm... Key File, и Wrapper Asm... Key Name, и Assembly Name. А как называется утилита коммандной строки? Wanderer2019 , если ко мне то:
На форуме общие вопросы .NET?
Ага. |
Автор: Exception 11.10.2006, 20:04 |
Key file - это и есть файл ключа, которым подписывается сборка ![]() |
Автор: DarkDragon 11.10.2006, 22:55 |
Во я тормоз ![]() ![]() ![]() |
Автор: Wanderer2019 12.10.2006, 15:42 | ||
Вообщем суть дела такова... Не обязательно пихать эту dll в GAC. Достаточно указать параметр в regasm, символизирующий чтение длл из текущий папки - /codebase. Весь цикл по регистрации моей длл я делал следующим образом. 1. создал ключи при помощи утилитки sn (sn -k key.snk) 2. в файле AssemblyInfo.cs прописываешь строки о немедленном подписании. (У меня там 3 строки касательно этого... что я писал, а что было я не помню поэтому выложу все
) 3. Компилишь - получаешь свою dll. 4. Регистришь ее средсвами RegAsm. (regasm /tlb mycom.dll /codebase) все. после этих действий я смог создать свой компонент из VBS через CreateObject("Namespace.Class") Возможно данное описание чем то тебе поможет. |
Автор: DarkDragon 13.10.2006, 00:22 |
Wanderer2019, Спасибо![]() |