Jump to content

Как для библиотеки классов задать пути поиска дополнительных dll


Recommended Posts

При сборке dll, сторонние библиотеки копируются в выходной каталог.

И мое приложение находит эти библиотеки, так , как в первую очередь ищет в своем каталоге

Но если я хочу эти библиотеки переложить в каталог например bim, рядом с загружаемой dll, то приложение найти и подгрузить библиотеки не может

прописать пути поиска в App.config

 <runtime>  
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">  
         <probing privatePath="bin;bin2\subbin;bin3"/>  
      </assemblyBinding>  
   </runtime>

работает только для исполняемых файлов (ехе)

т.к. при загрузке в нано dll поиск идет от nCad.exe

---------

собственно вопрос, как задать путь относительно dll?

Edited by doctorraz
поправил название
Link to comment
Share on other sites

Имя вроде должно полностью совпадать :
App.config --> App.dll.config (при том что в этой dll находится entry point)
App.config --> App.exe.config

Написано "bim" в конфиге "bin".

Link to comment
Share on other sites

3 минуты назад, Ivanco сказал:

App.config --> App.dll.config

так и есть

4 минуты назад, Ivanco сказал:

Написано "bim" в конфиге "bin".

???

-----------

вот смотри, собираю с таким конфигом

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
    </startup>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <probing privatePath="bin;bin2\subbin;bin3"/>
        </assemblyBinding>
    </runtime>
</configuration>

image.png.2003c14574a08400c27a2b98a868b95a.png

экзешники библиотеки в bin находят...

а дллка не находит, но если положу подключаемые дллки в bin нанокада, то все работает

----------

я так понимаю, что для экзешников исполняемый путь от расположения экзешника

а для загружаемой дллки, исполняемый путь это от наноэкзешника???

 

 

Link to comment
Share on other sites

нашел "решение"

сильно в лоб

в АК не проверял(((

Спойлер
            //sPath путь к этой сборке
            string[] asmPaths =  Directory.GetFiles(sPath,"PdfSharp-gdi.dll", SearchOption.AllDirectories);
            if (asmPaths.Length > 0)
            {
                string asmPath = asmPaths[0];//хватаем первую в списке

                if (File.Exists(asmPath))
                {
                    object vEho = App.Application.GetSystemVariable("CMDECHO");
                    Cad.SetSystemVariable("CMDECHO", 0);

                    //HACK загружаем библиотеку
                    Cad.DocumentManager.MdiActiveDocument.Editor.Command(new object[] { "netload", "\"" + asmPath + "\"" });

                    Cad.SetSystemVariable("CMDECHO", vEho);
                }
            }

 

upd немного поправил, теперь ищет во всех папках в каталоге основной dll

работает из метода Initialize

Edited by doctorraz
  • Like 2
Link to comment
Share on other sites

  • doctorraz changed the title to [Решено условно] Как для библиотеки классов задать пути поиска дополнительных dll
  • 1 month later...
  • doctorraz changed the title to Как для библиотеки классов задать пути поиска дополнительных dll

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт Разработка? Tell a friend!
×
×
  • Create New...