Как вы, Рори, упоминали в своем ответе, похоже, что решение заключается в том, что вам нужно включить ВСЕ зависимые библиотеки DLL в раздел «Ссылки» вашего приложения C # / вручную включить все библиотеки DLL в корзину C # или ту же папку, что и.exe запускается с.
Я только что столкнулся с этой проблемой с настройкой, аналогичной вашей.У меня есть следующие зависимости:
C# application -> (1) CLI Wrapper DLL -> (2) C++ Wrapper DLL -> (3) 3rd Party DLL
В разделе «Ссылки» я включил (1) CLI DLL.Я не включил (2) DLL C ++, потому что она выдает ошибку ERROR ...could not be added. Please make sure that the file is accessible, and that it is a valid assembly or COM component
(интерпретация: DLL C ++ не совместима с .NET / CLR).
Затем я просто предположил, что, поскольку (1) CLI DLL правильно и успешно связана с (2) C ++ DLL (я проверял это с помощью консольного приложения C ++ / CLI), приложение C # могло бы получить доступ к (2) зависимости C ++ через ссылку(1) зависимость CLI.Это было неправильно.
Я не знаю причину, почему, но приложение C # не может получить доступ к зависимостям CLI.
Мое решение было вручную включать (2)C ++ DLL в каталоге .exe. Помните, что (1) CLI DLL автоматически копируется, если Local Copy
имеет значение true в приложении C #.Похоже, я не сталкивался с какими-либо проблемами с (2) C ++ DLL, ссылающейся на (3) стороннюю DLL (т.е. (3) сторонняя DLL могла находиться по указанному пути / не нуждалась в локальном копировании).