У меня есть решение Visual Studio 2008, которое имеет следующие проекты:
- библиотека C ++ / ATL COM
- библиотека C #, использующая библиотеку COM
- библиотека модульных тестов C # (с использованием MSTest), которая ссылается на две другие библиотеки
В проекте библиотеки C ++ COM есть Custom Build Step, который создает библиотеку взаимодействия .NET, которая выглядит следующим образом:
tlbimp /asmversion:1.1.0.0 "$(TargetPath)" /out:"c:\Libraries\MyProject.Interop.dll"
Затем ссылка на библиотеку C # и библиотеку модульных тестов C # c:\Libraries\MyProject.Interop.dll
.
Моя проблема заключается в том, что при внесении изменений в IDL в библиотеке COM, библиотеке и библиотеке взаимодействияполучить заново, но в проектах C # все еще есть копии старых библиотек взаимодействия, которые лежат в своих выходных каталогах, и они не обновляются.Мне нужно вручную удалить эти старые библиотеки, чтобы новая была распознана.
Я почти могу заставить это работать, установив для свойства Копировать локальное для ссылки в проектах C # значение False.Но затем у меня возникают проблемы с запуском модульных тестов, поскольку библиотека взаимодействия не копируется в место развертывания теста.
Я могу взломать эту проблему, добавив дополнительные пользовательские шаги сборки для удаления и / или копирования библиотек вокругили с помощью развертывания модульного теста, но есть ли какой-нибудь простой способ заставить Visual Studio просто использовать обновленную библиотеку взаимодействия везде, где она меняется?