загрузить ссылку DLL из другой папки?

У меня есть консольное приложение.NET, это ссылается на DLL. Это хорошо работает, если бы DLL находится в той же папке как EXE, но я хотел бы поместить DLL в другую папку. Как я могу сделать это?

22
задан Marco van de Voort 6 January 2010 в 16:04
поделиться

3 ответа

[

] Если dll находится в подпапке, вы можете добавить эту папку в [] AppDomain private path[].[

] [

] Путь приватного мусорного контейнера AppDomain не может быть изменён после создания AppDomain (AppDomain.AppendPrivatePath устарел), если вы не хотите создавать новый AppDomain, вы можете изменить []зондирующий элемент[] в App.config. [

] [

] Если он не находится в подкаталоге, всё усложняется, вы можете загрузить [] assembly[], используя её полный путь, но если он ссылается на другую сборку, то CLR не сможет разрешить зависимости. [

] [

]Если вы хотите разрешить зависимости, вы можете добавить обработчик в []AppDomain.AssemblyResolve[] и получить нужную сборку в вашей конкретной папке.[

] [

]Другая возможность - поместить эту dll (и зависимости) в GAC.[

].
19
ответ дан 29 November 2019 в 05:40
поделиться
[

] Если DLL загружается динамически, просто укажите полный путь к ней. Если она статическая, или вам так кажется, добавьте путь библиотеки к переменной окружения PATH. Да, эта реликвия DOS все еще актуальна.[

] [

]Кроме того, прочитайте документ в LoadLibrary() API для лучшего понимания загрузки DLL.[

].
2
ответ дан 29 November 2019 в 05:40
поделиться

Ну, можно заставить приложение искать в определенных каталогах, которые можно указать в разделе конфигурации. Затем вы можете загрузить их при запуске приложения. На самом деле я не знаю, что вы пытаетесь сделать, но это может быть решением.

Assembly.Load("Assembly.Name")

Если вы не собираете какую-нибудь архитектуру плагина, я бы подумал, зачем вам это нужно.

0
ответ дан 29 November 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: