Почему мое приложение .NET CF не может найти DLL в том же каталоге, что и исполняемый файл? - PullRequest
1 голос
/ 26 ноября 2010

У меня есть приложение .NET CF 1.1, которое отлично работает уже много лет. Иногда я получаю билет службы поддержки со следующим сообщением об ошибке (универсальным):

    Method not found: 
    MethodName
    AssemblyNamespace.Class

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

Имеет ли значение, как я добавил ссылку в Visual Studio (2003, кстати)? Для параметра «Копировать локально» задано значение «Истина», поэтому я предположил, что он должен находиться в том же каталоге, что и мой исполняемый файл.

Любая помощь, которую вы можете предложить, приветствуется. Спасибо.

РЕДАКТИРОВАТЬ: Я считаю, что эта DLL также находится в каталоге Windows устройства, возможно, другой версии. Он содержит множество аппаратных функций (например, подсветка, состояние клавиатуры и т. Д.)

Ответы [ 3 ]

1 голос
/ 26 ноября 2010

Нет, неважно, как вы добавляете ссылку в Visual Studio 2003. (уверен на 100%)
Теперь не уверен: я думаю, что кто-то еще имеет такую ​​же сборку в GAC телефона.Таким образом, вызывается сборка GAC, а не та, которую вы развернули, и этой версии сборки не хватает запрошенной функции.

0 голосов
/ 09 марта 2011

Иногда .NetCf выдает это исключение, когда устройству не хватает памяти, вместо ожидаемого исключения «Недостаточно памяти». Я наблюдал такое поведение чаще при загрузке нативных dll с использованием P / Invoke, чем при загрузке чистых dll netcf.

0 голосов
/ 27 ноября 2010

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

...