У меня есть консольное приложение.NET, это ссылается на DLL. Это хорошо работает, если бы DLL находится в той же папке как EXE, но я хотел бы поместить DLL в другую папку. Как я могу сделать это?
] Если dll находится в подпапке, вы можете добавить эту папку в [] AppDomain private path[].[
] [] Путь приватного мусорного контейнера AppDomain не может быть изменён после создания AppDomain (AppDomain.AppendPrivatePath устарел), если вы не хотите создавать новый AppDomain, вы можете изменить []зондирующий элемент[] в App.config. [
] [] Если он не находится в подкаталоге, всё усложняется, вы можете загрузить [] assembly[], используя её полный путь, но если он ссылается на другую сборку, то CLR не сможет разрешить зависимости. [
] []Если вы хотите разрешить зависимости, вы можете добавить обработчик в []AppDomain.AssemblyResolve[] и получить нужную сборку в вашей конкретной папке.[
] []Другая возможность - поместить эту dll (и зависимости) в GAC.[
].] Если DLL загружается динамически, просто укажите полный путь к ней. Если она статическая, или вам так кажется, добавьте путь библиотеки к переменной окружения PATH. Да, эта реликвия DOS все еще актуальна.[
] []Кроме того, прочитайте документ в LoadLibrary() API для лучшего понимания загрузки DLL.[
].Ну, можно заставить приложение искать в определенных каталогах, которые можно указать в разделе конфигурации. Затем вы можете загрузить их при запуске приложения. На самом деле я не знаю, что вы пытаетесь сделать, но это может быть решением.
Assembly.Load("Assembly.Name")
Если вы не собираете какую-нибудь архитектуру плагина, я бы подумал, зачем вам это нужно.