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