gregmac
gregmac

Reputation: 25281

msbuild.exe staying open, locking files

I use TeamCity which in turn invokes msbuild (.NET 4). I have a strange issue in that after a build is complete (and it doesn't seem to matter if it was a successful build or not), msbuild.exe stays open, and locks one of the files, which means every time TeamCity tries to clear its work directory, it fails, and can't continue.

This happens almost every time.

I'm really lost on this one, so I'll try to provide as much detail as possible.

Has anyone run across this before?

Upvotes: 109

Views: 40886

Answers (2)

Brian
Brian

Reputation: 118865

Use msbuild with /nr:false.

Briefly: MSBuild tries to do lots of things to be fast, especially with parallel builds. It will spawn lots of "nodes" - individual msbuild.exe processes that can compile projects, and since processes take a little time to spin up, after the build is done, these processes hang around (by default, for 15 minutes, I think), so that if you happen to build again soon, these nodes can be "reused" and save the process setup cost. But you can disable that behavior by turning off nodeReuse with the aforementioned command-line option.

See also:

Upvotes: 135

dan
dan

Reputation: 541

To disable node reuse within Visual Studio, you must use an environment variable:

MSBUILDDISABLENODEREUSE=1

Upvotes: 48

Related Questions