Как заставить систему сборки Visual Studio понимать неуправляемые зависимости управляемого dlls?

Когда создание управляемого кода Visual Studio правильно (и рекурсивно) копирует dlls управляемых проектов, на которые ссылаются, к выходной папке проекта, являющегося сборкой.

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

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

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

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

9
задан Ziphnor 30 December 2009 в 03:05
поделиться

1 ответ

Одним из обходных путей, похоже, является добавление еще одного узла в управляемый проект DLL, назвав неуправляемую DLL и установив Build Action = "None", а Copy to Output Directory = "Copy if Newer" (Копировать, если новая).

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

Добавьте узел и установите его сборочный инструмент на Custom Build Tool. Затем, на странице Custom Build Step, установите команду Command на и скопируйте $(InputPath) $(OutDir) и Outputs на $(OutDir)\$(InputFileName). Похоже, это должно сработать.

5
ответ дан 3 November 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: