Что такое .tlog
файлы?
Они выводятся MSBuild File Tracker, который оборачивает исполняемые файлы сборки Visual C ++ (например, cl.exe
и link.exe
), чтобы отслеживать, какие файлы он записывает и читает из них. Он записывает эти пути к файлам в файлах .tlog
в промежуточном каталоге и использует их для определения способа построения инкрементной сборки.
(Источник: Внутри Microsoft Build Engine: использование MSBuild и Team Foundation Build , автор Сайед Хашими и Уильям Варфоломей.)
Что вызывает их создание?
Любое использование MSBuild может инициировать создание или обновление .tlog
файлов.
Почему эти файлы появляются так поздно?
Один из процессов, записывающих файлы .tlog
, - vctip.exe
. В марте 2018 года инженер Microsoft Ян Бирман (владелец телеметрии для VC ++) объяснил :
Это небольшое приложение является фоновым процессом, который запускается во время сборки и позволяет инструментам VC ++ взаимодействовать со службой VS Telemetry (также известной как программа улучшения качества VS). Приложение продолжает работать после сборки, если сразу же запускается другая сборка, чтобы ускорить компиляцию.
Я понимаю, что текущее время ожидания (около 15 минут) слишком велико.
Итак, ответ таков: фоновый процесс остается активным даже после завершения сборки, в этом случае даже после удаления всех соответствующих файлов, и продолжает пытаться записать файлы телеметрии в свой каталог.
Как мне решить эту проблему?
Bearman предлагает два решения :
- Обновление Visual Studio.
Предстоящие выпуски Visual Studio (начиная с VS 2017 15.7, теперь в предварительном просмотре) сократят время, в течение которого он продолжает работать, до 15 секунд после последней сборки. Надеюсь, что это решит все проблемы, которые у вас возникли с этой программой.
(Я не пытался выполнить обновление, поэтому я не могу подтвердить, что это решает проблему. Я также с интересом отмечаю более раннее сообщение об ошибке почти такой же проблемы, на которое был дан ответ обещание в марте 2018 года , что недавнее обновление устранило проблему.)
- Убить вручную
vctip.exe
.
Тем временем, чтобы обойти эту проблему, не стесняйтесь вручную убивать vctip.exe в любое время. Вы можете использовать команду Windows taskkill /IM vctip.exe
, чтобы немедленно остановить ее. Это всегда безопасно делать, не опасаясь потери или повреждения данных.
В моем конкретном случае TeamCity это легко добавить в качестве дополнительного шага сборки к вашей конфигурации сборки после завершения MSBuild - запустив сценарий:
taskkill /IM vctip.exe /f >nul 2>&1
Обратите внимание, что это решение делает определенные предположения о вашей системе сборки, например, что он не запускает несколько сборок одновременно. И убедитесь, что это хорошо задокументировано, потому что потом выяснить, откуда оно взято, будет хэдшрейтер ...