MSBuild, ввод и вывод того же файла?

У меня есть цель MSBuild, которая преобразует файл на место, то есть входной и выходной файлы - это тот же самый файл. Как заставить Visual Studio правильно обрабатывать сборку интеграции? Должен ли я обязательно перемещать файл?

msbuild,

2

Ответов: 1


1 принят

Короткий ответ: никогда не преобразовывайте файл во время сборки. Любое преобразование должно обязательно создавать новый файл в другом месте или с другим именем.

Длинный ответ. MSBuild отслеживает, если файл обновлен на основе временных меток. Это тот же механизм, который используется makeбольшинством других систем сборки. Это позволяет вашим инкрементным сборкам выполнять частичную перестройку только необходимых шагов сборки. Обратите внимание, что для того, чтобы сделать инкрементные сборки, вы должны объявить все входные и выходные файлы в целевых Inputsи Outputsатрибутах. Если у вас есть тот же файл, Inputsчто и в нем Outputs, он будет считаться актуальным, и цель не будет выполнена, что нарушит вашу сборку.

Если вам не нужна инкрементная сборка, вы можете заставить ее работать, просто создавая цель, которая не имеет Inputsи Outputs. В этом случае цель всегда будет выполнена. Это связано с ценой, которую вы делаете в полной мере каждый раз.

MSBuild,
Похожие вопросы