Как загрузить .exe как сборку .NET? - PullRequest
14 голосов
/ 27 апреля 2011

Могу ли я просто использовать?:

Assembly.LoadFile

Не уверен, если это способ сделать это?

Но когда я пытаюсь такой подход, он выдает Could not load file or assembly "CustomControlLib" или одинего зависимостей.Система не может найти указанный файл.

Есть идеи?

Ответы [ 4 ]

8 голосов
/ 27 апреля 2011

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

Например:

private Assembly AssemblyEventHandler(object sender, ResolveEventArgs args)
{
    return locatedAssembly;
}

Кроме того, я хотел бы рассмотреть вопрос об использовании Assembly.LoadFrom, особенно после прочтения этого , который имеет сильное утверждение от nobugz и ссылается на некоторые хорошие чтение (все датировано, но по большей части должно выдерживать).

3 голосов
/ 07 ноября 2014

Если вы используете Assembly.LoadFrom(), зависимости будут загружаться из каталога, где расположена сборка.

Assembly.LoadFile() игнорирует все остальные библиотеки DLL и исполняемые файлы в той же папке.

3 голосов
/ 27 апреля 2011

Да, вы можете загрузить .Net exe так же, как вы бы загрузили Dll.Ошибка, которую вы получаете, вызвана зависимостями вашего exe.Убедитесь, что эти зависимости могут быть найдены, т. Е. Находятся в пути поиска сборки.

0 голосов
/ 27 апреля 2011

Да, вы можете использовать Assembly.LoadFile(). Проверьте свой путь.

...