Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 08.10.2012, 20:06   #1
AntyDES
Пользователь
 
Регистрация: 07.04.2011
Сообщений: 19
Репутация: 10
Вопрос C# & DLL: как указать, что загружать DLL нужно из ЗАДАННОЙ папки "D:\My\Path\a.dll" ?

В Visual Studio 2010, в Обозревателе решений, кликаю правой кнопкой мышки по категории "Ссылки", нажимаю добавить ссылку, далее через обзор выбираю "D:\My\Path\a.dll" и добавляю. В коде обращаюсь к методам этой библиотеки (которая также написана мной на c#).

После компиляции и запуска exe-шника, он выдает ошибку, что DLL не найдена. Если положить DLL рядом с ним, то ошибки нет.

Вопрос только в одном: как сказать программе, что загружать DLL нужно ТОЛЬКО из ЗАДАННОЙ папки "D:\My\Path\a.dll" ?

Мне не нужно копировать DLL в папку с программой или ОС, и очень не хочется пользоваться методом [DllImport("...
AntyDES вне форума   Ответить с цитированием
Старый 08.10.2012, 21:10   #2
veniside
Профессионал
 
Регистрация: 03.01.2011
Сообщений: 2,508
Репутация: 868
По умолчанию

можно просто "D:\My\Path\" добавить в PATH
__________________
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума   Ответить с цитированием
Старый 08.10.2012, 21:35   #3
Rififi
Профессионал
 
Регистрация: 19.08.2009
Сообщений: 2,120
Репутация: 866
По умолчанию

AntyDES

Вопрос только в одном: как сказать программе, что загружать DLL нужно ТОЛЬКО из ЗАДАННОЙ папки "D:\My\Path\a.dll" ?

kb837908
Rififi вне форума   Ответить с цитированием
Старый 08.10.2012, 21:39   #4
AntyDES
Пользователь
 
Регистрация: 07.04.2011
Сообщений: 19
Репутация: 10
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
можно просто "D:\My\Path\" добавить в PATH
к сожалению, такое решение не подходит
должно же быть что-то, более подробно описывающее ссылки
AntyDES вне форума   Ответить с цитированием
Старый 09.10.2012, 11:19   #5
Rist
Новичок
 
Регистрация: 26.09.2012
Сообщений: 3
Репутация: 10
По умолчанию

Попробуйте в файле .csproj поменять значения элементов <HintPath>
Rist вне форума   Ответить с цитированием
Старый 09.10.2012, 21:30   #6
AntyDES
Пользователь
 
Регистрация: 07.04.2011
Сообщений: 19
Репутация: 10
Вопрос

Цитата:
Сообщение от Rist Посмотреть сообщение
Попробуйте в файле .csproj поменять значения элементов <HintPath>
к сожалению, в моем файле нет опции с <HintPath>
можете ли Вы сказать в какой раздел и как правильно добавить его?
AntyDES вне форума   Ответить с цитированием
Старый 10.10.2012, 10:45   #7
Rist
Новичок
 
Регистрация: 26.09.2012
Сообщений: 3
Репутация: 10
По умолчанию

В первой паре тегов <ItemGroup>, примерно так:

Код:

<ItemGroup>
    <Reference Include="Lib">
      <HintPath>C:\Libs\Lib.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <!-- etc. -->
</ItemGroup>

Еще немного по теме тут (по-английски): http://wiki.visualwebgui.com/pages/i...tudio_HintPath
Rist вне форума   Ответить с цитированием
Старый 10.10.2012, 17:57   #8
AntyDES
Пользователь
 
Регистрация: 07.04.2011
Сообщений: 19
Репутация: 10
Вопрос

Цитата:
Сообщение от Rist Посмотреть сообщение
В первой паре тегов <ItemGroup>, примерно так:

Код:

<ItemGroup>
    <Reference Include="Lib">
      <HintPath>C:\Libs\Lib.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <!-- etc. -->
</ItemGroup>

Еще немного по теме тут (по-английски): http://wiki.visualwebgui.com/pages/i...tudio_HintPath

Прошу прощения, в первый раз не заметил. Действительно, эти строки есть в файле моей программы. Но тем не менее, он сам эту информацию не обрабатывает нужным образом. Видимо, нужно еще что-то дописать, чтобы программа пользовалась HintPath.

Кстати, по Вашей ссылке написано:
Код:

This article applies to Visual Studio 2005 and Visual Studio 2008. Not yet verified for Visual Studio 2010.


Последний раз редактировалось AntyDES; 10.10.2012 в 18:02. Причина: Боженька заставил
AntyDES вне форума   Ответить с цитированием
Старый 10.10.2012, 18:25   #9
eval
паяю
 
Регистрация: 29.08.2012
Сообщений: 4,030
Репутация: 422
По умолчанию

AntyDES вы сообщение от Rififi почему игнорируете? уже бы 2 дня назад все сделали и забыли...
eval вне форума   Ответить с цитированием
Старый 10.10.2012, 19:29   #10
AntyDES
Пользователь
 
Регистрация: 07.04.2011
Сообщений: 19
Репутация: 10
Восклицание

Цитата:
Сообщение от eval Посмотреть сообщение
AntyDES вы сообщение от Rififi почему игнорируете? уже бы 2 дня назад все сделали и забыли...
Огромное спасибо Rififi. Пока его ответ является лучшим. Но есть одно НО.

Дописать в .config путь я не могу, так как мое приложение на самом деле - тоже библиотека. Т.е. в стронем приложении загружается моя библиотека, затем из моей загружается еще одна моя библиотека. Все мои библиотеки будут копироваться в определенные папки пользователей.

Способ с обработкой события AssemblyResolve мне понравился, я написал рабочий код (выложу в течение недели), который полностью устраняет проблему. Но тут два неприятных момента:
1. В каждую свою библиотеку, которая будет использовать другую библиотеку, мне придется добавлять этот код. Конечно, его немного, но все таки, он есть.
2. Способ с HintPath выглядит очень изящно, не требует редактирование кода. Он мне приглянулся из-за своей простоты. Именно поэтому я хочу реализовать именно с помощью HintPath.
AntyDES вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт из DLL (__declspec(dllexport) и extern "C" {}). Объясните. spamer Общие вопросы C/C++ 3 24.01.2012 04:27
Не удается найти точку входа " " в DLL ".dll" Linore C# (си шарп) 0 13.10.2011 10:38
Что происходит на странице с такие JS: <script src="cmp.php?complete&amp;" id="las..." ...>? TwiX JavaScript, Ajax 0 05.02.2010 18:38
Как прикрутить к своему приложению "7z.dll"? Валигози Общие вопросы Delphi 18 10.06.2009 12:01
Как "динамически" использовать "DLL" Air Общие вопросы Delphi 7 11.12.2007 22:55


16:51.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru