У нас есть большая система, состоящая из C #, управляемого C ++ и простых старых неуправляемых сборок / dll C ++. Существует код C ++, который зависит от управляемого кода C ++, который зависит от кода C #, который зависит от управляемого кода C ++, который зависит от простого старого кода C ++ (вот так!). Когда мы настраивали нашу среду автоматической сборки несколько лет назад, мы обнаружили, что MSBuild.exe неправильно обрабатывает все имеющиеся у нас зависимости.
Работая с Microsoft, мы смогли решить некоторые проблемы, но не все. Если мне не изменяет память, мы никогда не сможем собрать сборки C #, которые зависят от управляемых библиотек C ++. Таким образом, мы закончили создание собственного сценария сборки, который вызывал devenv.exe из командной строки, и он работал просто отлично.
Конечно, это было с VS2005, сейчас это можно исправить, но скрипт все еще работает, поэтому мы еще не рассмотрели проблему.