2010-06-04 2 views
0

Я знаю, что вам нужно включить отладчик «Исходный код», чтобы войти в dll pinvoke'd, но я даже не дошел до этого. Вместо этого, когда я пытаюсь войти в DLL Я получаю следующее исключениеdebugging asp.net & pinvoke

«Не удается загрузить DLL„Native.dll“: Указанный модуль не может быть найден (Исключение из HRESULT: 0x8007007e).»

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

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

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

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

Edit:

Я нашел подобный вопрос с хорошими предложениями. Unmanaged DLLs fail to load on ASP.NET server

+0

Попробуйте поместить его в каталог Windows или system32. –

ответ

1

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