Я пишу C# Library-Project, который включает в себя другие библиотеки. Эти библиотеки должны храниться в подпапке «lib».Ссылка на dll-файлы из подпапки в проекте библиотеки
Скажем, мой проект называется mylib, а другие библиотеки называются extralib. Чем каталог выглядит следующим образом:
lib/extralib1.dll
lib/extralib2.dll
...
mylib.dll
теперь я написал C# -console-приложения: вызвать функцию из MyLib.dll, которая вызывает функцию из EXTRALIBS. Все отлично работает, когда я использую файл app.config, как это:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
...
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="lib"/>
</assemblyBinding>
</runtime>
</configuration>
Но проблема в том, когда я использую MyLib.dll, например, в MatLab. Ссылки на экстралибы не работают. Единственная работа, когда я сохраняю их все в одной папке. И это то, чего я не хочу делать.
Итак, точка добавляет lib к закрытому пути в консольном приложении, это не очень хорошее решение! Я должен добавить дополнительные libs к частному пути внутри mylib.dll.
У вас есть идея, как это сделать? Или, может быть, есть лучший способ решить эту проблему?
Я нашел эту функцию: 'AppDomain.CurrentDomain.SetupInformation.PrivateBinPath =" lib ";' Но я не хочу знать, какое fucntion вызывается сначала в mylib.dll, и я не хочу добавлять это в каждую функцию – morgelo
Ваш конфигурационный файл просто не используется, CLR пытается найти matlab.exe.config. Написание файла конфигурации для программы, которая может использовать многие другие плагины, которые также нуждаются в том, чтобы возиться с этим конфигурационным файлом, является ... неразумным. Никто не заботится, что эти DLL-файлы находятся в одном каталоге, только вы. –