我使用TeamCity,后者又调用msbuild(.NET 4)。我有一个奇怪的问题,在构建完成后(如果它是成功构建似乎没关系),msbuild.exe保持打开状态,并锁定其中一个文件,这意味着每次TeamCity尝试要清除其工作目录,它会失败,并且无法继续。
每次发生几乎。
我真的迷失了这个,所以我会尽量提供尽可能详细的信息。
/m
命令行参数(这意味着使用多个核心)External Tools\Telerik\Telerik.Reporting.Dll
中的外部DLL相同。 (External Tools
目录中还包含其他几个.DLL文件,这些文件在类似的路径结构中永远不会导致此问题。目前,这是Telerik报告的试用版,如果有任何不同。msbuild.exe *32
进程:我相信有7.使用Process Explorer,它们看起来都像顶级进程(没有父进程)。它们全部使用20-50MB RAM和0.0%CPU。 svn:mime-type = application/octet-stream
以前有没有人碰过这个?
答案 0 :(得分:116)
将msbuild
与/nr:false
一起使用。
简单地说:MSBuild尝试做很多事情,特别是对于并行构建。它会产生许多“节点” - 可以编译项目的单个msbuild.exe进程,并且由于进程需要一点时间来启动,在构建完成后,这些进程会挂起(默认情况下,15分钟,我认为),如果您很快再次构建,这些节点可以“重复使用”并节省流程设置成本。但您可以通过使用上述命令行选项关闭nodeReuse来禁用该行为。
另见:
答案 1 :(得分:39)
要在Visual Studio中禁用节点重用,必须使用环境变量:
MSBUILDDISABLENODEREUSE=1