Как заставить систему сборки Visual Studios понимать неуправляемые зависимости управляемых библиотек?
=====================================================================================================

При построении управляемого кода Visual Studio правильно (и рекурсивно) копирует dll ссылочных управляемых проектов в выходную папку строящегося проекта.

Однако, если одна из этих ссылок представляет собой управляемую DLL, которая зависит от неуправляемых библиотек DLL, эти неуправляемые библиотеки DLL не копируются в выходную папку, даже если их соответствующие проекты находятся в том же решении и перечислены как зависимости управляемой библиотеки DLL.

Я понимаю, что эту проблему можно решить, если все проекты используют одну и ту же папку вывода. Мы уже делаем это для большинства проектов, но мы предпочитаем разделять папки вывода модульных тестов, вызывая вышеуказанную проблему для модульных тестов, которые используют управляемый Dll с неуправляемыми зависимостями.

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

Поэтому я хотел бы знать, есть ли способ заставить систему сборки понять, что она всегда должна копировать неуправляемые зависимости управляемой DLL всякий раз, когда решает скопировать управляемую DLL?

Один из обходных путей, по-видимому, заключается в добавлении другого узла в управляемый проект DLL, назвав неуправляемую DLL и установив Build Action = "Никто"и скопировать в выходной каталог = "Копировать, если новее ".

Изменить: Для создания проекта C ++ / CLR, я думаю, это будет работать:

Добавьте узел и установите его инструмент сборки на**Пользовательский инструмент сборки**, Затем на странице «Шаг пользовательской сборки» установитекоманда в**копировать $ (InputPath) $ (OutDir)** иВыходы в**$ (OutDir)  $ (InputFileName)**, Похоже, это должно работать.