Мы думаем о том, чтобы добавить автоматическое управление версиями в собственный проект C ++, разрабатываемый и автоматически создаваемый Team Foundation Server. В идеале, мы должны иметь начало сборки (которое проверяет все новейшие версии из TFS), затем в качестве первого шага получить номер сборки из TFS, создать файл заголовка, а затем проверить этот файл обратно перед тем, как продолжить сборку. Возможно ли вообще сделать проверку / регистрацию во время такой сборки?
Я не слишком знаком с тем, как работает TFS и возможностями извлечения информации из нее, и никто из нас не работает в нашей команде, мы используем ее впервые …
Да, ты мог. Вот отличный веб-сайт, показывающий, как это сделать для AssemblyInfo для C #, так что вам придется немного скорректировать решение, но оно должно показать вам достаточно, чтобы выполнить вашу задачу.
Будьте очень осторожны с Check Out / In в среде с большими объемами сборки. Вы будете часто получать «не удалось проверить файл уже заблокирован», и возникнут конфликты при регистрации, потому что другая сборка вернулась после проверки этой сборки. Используйте пользовательские задачи с большим количеством обработки ошибок и проверки и способностью обрабатывать конфликты. Не используйте TF.EXE в большом объеме.
Интересная идея, я не знаю, возможно ли это сделать с помощью встроенных действий сборки (возможно, нет), однако вы можете использовать Invoke Process, чтобы вызывать практически все, что вы хотите, так что вы можете попробовать вызвать tf. exe (т.е. установите FileName в дорожка\ tf.exe и Аргументы к «оформлению заказа» fullpathtothefile«) чтобы извлечь файл, отредактируйте / измените его (возможно, в другом действии Invoke Process), затем используйте Invoke Process, чтобы вернуть его обратно.
Просто бросаю идею там!
Не проверяйте файл версии — это вызовет проблемы без конца. Вместо этого, сгенерируйте его на лету, используя имя сборки, которое предоставляет TFS, и скомпилируйте его. Мы начали с Решение Wintelect (который поддерживает C ++, C # и другие языки), и изменил его, чтобы включить строку фактической версии сборки в виде строки.
Предупреждение: создание файла каждый раз будет нарушать пошаговую сборку. В итоге мы воссоздали файл, только если он не существует, что означает, что инкрементные сборки имеют неправильные номера сборки, но наши «официальные» сборки не являются инкрементными и имеют правильный номер.