Как MSBuild проверяет актуальность цели или нет? - PullRequest
11 голосов
/ 08 августа 2011

MSBuild выдает следующее сообщение для актуальных целей:

Skipping target "MyTarget" because all output files are up-to-date with respect to the input files.

Как выполняется фактическая проверка?

Ответы [ 2 ]

11 голосов
/ 08 августа 2011

Проверка потока Инкрементная сборка :

Целевой элемент может иметь оба атрибута Inputs, который указывает какие элементы целевая> ожидает в качестве входных данных и атрибута Outputs, который указывает, какие предметы он производит в качестве вывода MSBuild пытается найти отображение 1-к-1 между значениями этих атрибутов. Если сопоставление 1-к-1 существует, MSBuild сравнивает отметку времени каждого элемента ввода с отметкой времени его соответствующего элемента вывода. Выходные файлы без 1-к-1 сопоставления сравниваются со всеми входными файлами. Предмет считается актуальный, если его выходной файл того же возраста или новее, чем его вход файл или файлы.

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

6 голосов
/ 08 августа 2011

MSBuild сравнивает временные метки входного и выходного файлов, чтобы определить, актуален ли файл.Подробнее см. Инкрементные сборки .

...