Проблема с референсами

Язык C#: программирование на C#, портирование кода C# на VB и VB на C#.

Модератор: Ramzes

Godfather
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 22
Зарегистрирован: 30.01.2004 (Пт) 16:14
Откуда: Москва, Россия

Проблема с референсами

Сообщение Godfather » 05.04.2007 (Чт) 12:14

Добрый день!
У меня возникла следующая проблема:

Есть приложение. Оно ищет свои плагины в папке /modules/
Там лежат библиотеки (А), определяемые общим интерфейсом.
Так же эти библиотеки имеют референсы на какие-то третьи библиотеки (Б), которые лежат рядом с ними. т.е. в папке /modules/.

Получается следующая схема:
App -> [inteface] -> dll А -> [reference] -> dll Б

При попытке вызвать из приложения метод из А, в котором есть ссылка на Б (по референсу, соответственно) появляется сообщение об ошибке, что библиотека Б не найдена! (ибо она ищется в папке с приложением а не в папке с библиотекой, которой её вызывает)

Вопрос: как указать приложению дополнительный путь для поиска указанных в референсе библиотек?

У меня сложилось впечатление, что причина этой проблемы в том, что референс указывается не по пути к файлу, а по имени библиотеки (MyLib, Version=1.0.1.0 Culture=neutral, PublicToken=a1b2c3d4e5)
И поиск происходит либо в AppBase (он же StartupPath, карчое ппака приложения) либо в GAC'е - если ни там ни там файла нет - выдаётся ошибка FileNotFound! Что делать?

mad_Max
Бывалый
Бывалый
 
Сообщения: 203
Зарегистрирован: 15.09.2002 (Вс) 21:17
Откуда: Russia, Cherepovets

Сообщение mad_Max » 06.04.2007 (Пт) 10:54

как указать приложению дополнительный путь для поиска указанных в референсе библиотек?

Скорее всего так:
AppDomain.CurrentDomain.SetupInformation.PrivateBinPath = <список директорий, разделенных точкой с запятой>;
MSDN писал(а):Gets or sets the list of directories under the application base directory that are probed for private assemblies.
A String containing a list of directory names, where the names are separated by semicolons.
Private assemblies are deployed in the same directory structure as the application. If the directories specified for PrivateBinPath are not under ApplicationBase, they are ignored.

Godfather
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 22
Зарегистрирован: 30.01.2004 (Пт) 16:14
Откуда: Москва, Россия

Сообщение Godfather » 06.04.2007 (Пт) 12:23

спасибо! самое оно :)
за это время я нарыл только "конфиг-версию" этой настойки
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="plugin;modules"/>
</assemblyBinding>
</runtime>
</configuration>


Вернуться в C#

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

    TopList