отладка asp.net и пинвока - PullRequest
0 голосов
/ 04 июня 2010

Я знаю, что вам нужно включить отладчик 'Native Code', чтобы войти в dll pinvoke'd, однако я даже не дохожу до этого.Вместо этого, когда я пытаюсь войти в dll, я получаю следующее исключение

"Невозможно загрузить DLL 'Native.dll': указанный модуль не найден. (Исключение из HRESULT: 0x8007007E)"

Если я проверяю свои модули, я вижу, что текущая DLL-библиотека .Net находится в: C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \ project \ c4e2b8a9 \1234a123 \ assembly \ d12 \ de123456 \ 12345678_0304cb01 \ dotnet.dll

Так что имеет смысл, что я не нахожу свою заклинанную dll, так как она не существует на этом пути.Как я могу сделать так, чтобы, когда мой код запускался из местоположения «Временные файлы ASP.Net», он видел мою заколдованную dll?(Без жесткого кодирования пути).

В настоящее время мое декларирование выглядит следующим образом:

    [DllImport("Native.dll")]
    public static extern int RunTest();

Редактировать:

Я нашел похожий вопрос с некоторыми хорошими предложениями. Неуправляемые библиотеки DLL не загружаются на сервере ASP.NET

1 Ответ

1 голос
/ 04 июня 2010

Для того, чтобы pinvoke мог найти dll, dll должна находиться в ближнем .net dll или в одном из каталогов в переменной PATH. Вы можете динамически добавить путь к вашему приложению в PATH env. переменная процесса с использованием класса Environment. Но вам все равно придется знать путь к вашему приложению во время выполнения.

...