Проект C ++, над которым я работаю (который я конвертировал из VS2008 в VS2010), использовал несколько файлов vcbuild .rules для указания пользовательских правил сборки.Эти файлы .rules имели специальное свойство «AdditionalDependencies» для узла CustomBuildRule, в котором указывался список файлов, которые следует учитывать при разработке, нужно ли перестроить цель или нет.Эти «Дополнительные зависимости» были точно перенесены в соответствующий файл .props во время преобразования VS2010.
Файл .targets, связанный с пользовательским правилом сборки, добавляет эти AdditionalDependencies
к свойству Inputs
Target
узел.Это гарантирует, что цель будет выполнена в случае, если какой-либо из файлов, перечисленных в зависимостях, не существует, но она не выполнит цель, если одна из зависимостей новее, чем выходные данные цели.Это также не совсем логически правильно, поскольку не все файлы фактически являются входными данными, некоторые из них относятся к исполняемым файлам, которые могут использоваться во время сборки цели.Таким образом, они могут быть проверены в системе контроля версий и будут присутствовать, но более новая версия файла должна инициировать перестроение уязвимой цели.
Документация MSDN для цели узел показывает свойство Condition
, которое должно нормально работать для моих требований, но условия, поддерживаемые этим свойством, не отображаются после теста «Exists», который уже выполняется.
Есть ли условие, при которомЯ могу использовать метод, который будет сравнивать метки времени двух файлов (или, в идеале, метку времени файлов, перечисленных в настоящее время в AdditionalDependencies
, с выходными файлами цели), и, таким образом, позволять мне запускать «по-подобному», перестраивать эту цель, если онаустарели эти зависимости "?