Как загрузить .exe как сборку .NET?

Можно ли использовать?:

Assembly.LoadFile

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

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

Любые идеи?

Ответы

Ответ 1

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

Например:

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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