Assembly.LoadFrom отличается поведение в Windows 7 - PullRequest
2 голосов
/ 11 января 2012

Для нашего приложения мы используем систему обмена сообщениями, где, используя информацию в сообщении, мы можем создавать различные объекты, используя отражение на лету. Упрощенная версия этого:

if(Message.Control == "ControlA")
    Assembly.LoadFrom("ControlsA.dll")
else if (Message.Control == "ControlB")
    Aseembly.LoadFrom("ControlsB.dll")

Получив сборку, мы при необходимости вызываем различные методы.

Проблема на данный момент заключается в том, что когда мы используем этот метод для установок Windows 7, мы получаем ошибку «Не удалось загрузить файл или сборку», когда путь, о котором сообщается как обыскиваемый, является каталогом рабочего стола пользователя, в котором было запущено приложение. через короткий путь (C: \ Users \ * user * \ desktop).

Мой вопрос; почему вышеупомянутый метод не ищет в пути приложения для DLL в Windows 7, когда он работает в XP, мы должны делать что-то по-другому?

1 Ответ

3 голосов
/ 11 января 2012

Как насчет использования

Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)

, чтобы получить путь к исполняемому в данный момент коду?Должно быть легко найти ваши библиотеки, когда у вас есть эта информация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...