Я использую TeamCity, которая, в свою очередь, вызывает msbuild (.NET 4). У меня странная проблема в том, что после завершения сборки (и, кажется, не имеет значения, была ли она успешной или нет), msbuild.exe остается открытым и блокирует один из файлов, что означает каждый раз, когда TeamCity пытается очистить свой рабочий каталог, он не работает и не может продолжить.
Это происходит почти каждый раз.
Я действительно заблудился, поэтому постараюсь предоставить как можно больше деталей.
- Сервер представляет собой процессор Intel Core i7, 2 ГБ, с 64-разрядным пакетом обновления 2 (SP2) для Windows Server 2008.
- В TeamCity бегун msbuild настроен с параметром командной строки
/m
(что означает использование нескольких ядер)
- Файл, о котором идет речь, ВСЕГДА - это та же самая внешняя DLL, на которую ссылается один из проектов .NET по пути
External Tools\Telerik\Telerik.Reporting.Dll
. (Есть несколько других файлов .DLL, включенных в каталог External Tools
в аналогичной структуре пути, которые никогда не вызывают эту проблему). В настоящее время это относится к пробной версии отчетов Telerik, в случае, если это имеет какое-либо значение.
- Когда возникает проблема, в диспетчере задач всегда есть несколько процессов
msbuild.exe *32
: я думаю, что их 7. Используя Process Explorer, все они выглядят как процессы верхнего уровня (без родителей). Все они используют от 20-50 МБ оперативной памяти и 0,0% процессора.
- Если я подожду 1-3 минуты, процессы msbuild.exe завершатся самостоятельно, и TeamCity сможет корректно обновить рабочий каталог.
- Если я вручную завершу процессы msbuild, обновление TeamCity снова будет работать немедленно.
- Службы индексирования отключены в Windows (хотя предыдущие два пункта в значительной степени подтверждают, что причиной является проблема msbuild.exe).
- На Telerik.reporting.dll нет специальных свойств. Единственное свойство SVN
svn:mime-type = application/octet-stream
Кто-нибудь сталкивался с этим раньше?