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