мангуста рекурсивное заселение

Есть одна очень забавная вещь (и имеет техническую значимость), которая может растратить ваши часы, поэтому подумал о ее совместном использовании -

Я создал проект консольного приложения ConsoleApplication1 и проект библиотеки классов ClassLibrary1.

Весь код, который делал p / invoke, присутствовал в ClassLibrary1.dll. Поэтому перед отладкой приложения из visual studio я просто скопировал неуправляемую сборку C ++ (myUnmanagedFunctions.dll) в каталог \bin\debug\ проекта ClassLibrary1, чтобы он мог быть загружен в среду выполнения CLR.

Я продолжал получать

Не удалось загрузить DLL

в течение нескольких часов. Позже я понял, что все такие неуправляемые сборки, которые необходимо загрузить, необходимо скопировать в каталог \bin\debug стартового проекта ConsoleApplication1, который обычно представляет собой форму выигрыша, консольное или веб-приложение.

Итак, будьте осторожны, Current Directory в принятом ответе на самом деле означает Current Directory основного исполняемого файла, с которого начинается процесс приложения. Похоже на очевидную вещь, но может быть и не так.

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

13
задан DrakaSAN 25 September 2014 в 14:47
поделиться