2013-05-17 4 views
2

Я работаю над решением, которое создает некоторые библиотеки DLL. Предположим, что проект A создает A.dll. Проект B использует A.dll для выполнения некоторых функций.Всегда принудительно ссылаться на DLL?

Когда запущен Project B, он проверяет, существует ли в выходном каталоге A.dll, а если нет, он копирует A.dll из HintPath (как я понимаю). Но если A.dll уже находится в выходном каталоге, он не копируется.

Так что если проект А имеет изменения и создается новый A.dll, Project B не получит новую A.dll до тех пор, пока копия в выходном каталоге не будет удалена. Поэтому, если вы запустите Project B, он будет использовать старый код.

Есть ли способ заставить библиотеки DLL всегда копироваться? Может быть, удалите копии в выходной директории до того, как будет создан проект B?

Было бы так просто использовать ProjectReference, но это не поддерживается другой системой сборки, которую мы используем.

+2

Вы можете установить зависимости проектов между различными проектами в визуальной студии, попробовали ли вы это? Создайте решение, добавьте эти проекты, а затем определите зависимости проекта. – dinony

+0

Какую еще систему сборки вы используете? Если ссылки не поддерживаются, когда они специально разработаны для этого, вам действительно нужно сказать нам, что это такое, поэтому мы можем попытаться избежать любых других неподдерживаемых функций. – Bobson

ответ

3

Один из способов решения этой проблемы - в Project A, чтобы создать событие Post-Build. Вы можете сказать, что он копирует (или заменяет) файл A.dll в определенный каталог каждый раз в проекте A. Что-то вроде этого:

copy /Y "$(TargetDir)$(ProjectName).dll" "C:\SomePath"