Ich benutze TeamCity, das wiederum msbuild (.NET 4) aufruft. Ich habe ein seltsames Problem darin, dass msbuild.exe nach Abschluss eines Builds geöffnet bleibt (und es scheint keine Rolle zu spielen, ob es ein erfolgreicher Build war oder nicht) und eine der Dateien sperrt, dh jedes Mal, wenn TeamCity es versucht Das Löschen des Arbeitsverzeichnisses schlägt fehl und kann nicht fortgesetzt werden.
Dies passiert fast jedes Mal.
Ich bin wirklich verloren in diesem Fall, also werde ich versuchen, so viele Details wie möglich bereitzustellen.
- Server ist ein Intel Core i7, 2 GB RAM, mit Windows Server 2008 Standard 64-Bit SP2.
- In TeamCity wird der msbuild-Runner mit dem
/m
Befehlszeilenparameter konfiguriert (dh es werden mehrere Kerne verwendet). - Die betreffende Datei ist IMMER dieselbe externe DLL, auf die in einem der .NET-Projekte im Pfad verwiesen wird
External Tools\Telerik\Telerik.Reporting.Dll
. (Das Verzeichnis enthält mehrere andere DLL-DateienExternal Tools
in einer ähnlichen Pfadstruktur, die dieses Problem niemals verursachen.) Derzeit ist dies bei der Testversion von Telerik-Berichten der Fall, falls dies einen Unterschied macht. - Wenn das Problem auftritt, werden
msbuild.exe *32
im Task-Manager immer mehrere Prozesse aufgelistet: Ich glaube, es gibt 7. Mit dem Prozess-Explorer sehen alle wie Prozesse der obersten Ebene aus (keine übergeordneten Prozesse). Sie verwenden alle 20-50 MB RAM und 0,0% CPU. - Wenn ich 1-3 Minuten warte, werden die Prozesse von msbuild.exe von selbst beendet, und TeamCity kann das Arbeitsverzeichnis ordnungsgemäß aktualisieren.
- Wenn ich die msbuild-Prozesse manuell beende, funktioniert das TeamCity-Update sofort wieder.
- Indizierungsdienste sind in Windows deaktiviert (obwohl die beiden vorherigen Punkte ziemlich genau bestätigen, dass msbuild.exe das Problem verursacht).
- Es gibt keine besonderen Eigenschaften auf Telerik.reporting.dll. Die einzige SVN-Eigenschaft ist
svn:mime-type = application/octet-stream
Hat jemand das schon einmal gesehen?
/m /nr:false
, ich werde für ein paar Builds laufen und sehen, wie es geht. DankeUm die Wiederverwendung von Knoten in Visual Studio zu deaktivieren, müssen Sie eine Umgebungsvariable verwenden:
quelle