Я использую TeamCity, который, в свою очередь, вызывает msbuild (.NET 4). У меня есть странная проблема в том, что после завершения сборки (и, похоже, это не имеет значения, была ли она успешной сборкой или нет), msbuild.exe остается открытым и блокирует один из файлов, что означает каждый раз, когда TeamCity пытается чтобы очистить свой рабочий каталог, он не работает и не может продолжить.
Это происходит почти каждый раз.
Я действительно потерялся на этом, поэтому постараюсь предоставить как можно больше деталей.
- Сервер - это ядро Intel Core i7, 2 ГБ, с Windows Server 2008 стандартным 64-разрядным пакетом обновления 2 (SP2).
- В 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
Кто-нибудь сталкивался с этим раньше?