Модель компиляции .NET либо «в GAC», либо «все в одной папке». Было бы хорошо, если бы неуправляемый код имел поддержку, облегчающую это. Хотя, как вы говорите, все это во время выполнения, и DLL может прийти откуда угодно, для разработчиков, пишущих модульные библиотеки, некоторые дополнительные инструменты, помогающие управлять местоположениями, на мой взгляд, не сработают.

решение (the.sln)

Один проект C ++ (mycppproject.vcxproj в 2010 г. или mycppproject.vcproj в 2008 г.), который компилирует собственную DLL, экспортирующую некоторые функции. При отладке эта сборка c: \ output \ Debug \ mycppproject_d.dll, а в выпуске - сборка c: \ output \ Release \ mycppproject.dll.

Одно консольное приложение C # (mycsharpconsole.csproj), содержащее вызовы PInvoke в DLL.

Все компилируется нормально.

При сборке я хотел бы иметь возможность добавить ссылку из проекта csharp в проект cpp DLL, чтобы он мог скопировать соответствующий файл из соответствующего каталога в каталог \ bin \ Debug, в который встроен проект csharp.

Это должно быть возможно, поскольку среда IDE знает все, что нужно знать о том, где создается библиотека DLL и где создается приложение C #.

В Visual Studio 2010:

Я попробовал «Зависимости ...» в проекте csharp и добавил зависимость от mycppproject, но это не имеет никакого эффекта.

Я попытался «Добавить ссылку ...» в проект csharp и добавить ссылку на проект cpp, но я получаю предупреждение «Версия Target Framework для проекта« mycppproject »выше, чем версия Target Framework текущего проекта. , Вы все равно хотите добавить эту ссылку в свой проект? (Да / Нет / Отмена).

Нажатие «Да» приводит к появлению сообщения об ошибке «Невозможно добавить ссылку на mycppproject».