Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2012, 20:06   #1
AntyDES
Пользователь
 
Регистрация: 07.04.2011
Сообщений: 19
Вопрос 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
По умолчанию

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

AntyDES

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

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

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

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

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

В первой паре тегов <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
Вопрос

Цитата:
Сообщение от 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,022
По умолчанию

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

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт из 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 17:38
Как прикрутить к своему приложению "7z.dll"? Валигози Общие вопросы Delphi 18 10.06.2009 12:01
Как "динамически" использовать "DLL" Air Общие вопросы Delphi 7 11.12.2007 21:55