У меня есть процесс сборки, который выполняет следующие действия:Как заставить MSBuild не создавать цель частично?
- пробегов TLBIMP по ряду (скажем, 10) COM библиотек DLL (именованная группа TaskItems). Это моя цель «Импорт», которая использует задачу Exec.
- Выполняет ILDASM на 10 собраниях. Это моя цель «Разборка», которая использует задачу Exec.
- Запускает пользовательскую задачу, чтобы одновременно взять все 10 файлов IL и выполнять некоторую работу над ними (детали не важны, но очень важно, чтобы все 10 файлов IL обрабатывались вместе этой задачей). Это моя цель «Работа».
- Восстанавливает 10 файлов IL с использованием ILASM, обратно в 10 DLL. Это моя цель «Собрать», использует задачу Exec.
- Запуск ILMerge для объединения 10 сборок в один. Это моя цель «Слияние», использует задачу Exec.
Все отлично и денди, когда я делаю чистую перестройку. Когда я делаю инкрементную сборку, и только некоторые из исходных COM-библиотек изменились, MSBuild вполне корректно выполняет только частичные сборки соответствующих целей, для выходов, которые фактически устарели по отношению к их Входам.
Есть ли способ, которым я могу «заставлять» MSBuild только для одной цели (шаг 3 выше) для запуска задачи, передающей все входы вместо устаревших? Я не хочу изменять код моей настраиваемой задачи, чтобы жестко закодировать имена файлов, я бы хотел, чтобы они были предоставлены в качестве TaskItems из сценария MSBuild, но моей пользовательской задаче нужно предоставить ВСЕ входные данные, полученные из исходную группу TaskItem из COM-библиотек, а не только те, которые были перестроены с помощью этой конкретной сборки.