未能删除Microsoft.Bcl.Build.Tasks.dll

本文关键字:Build Tasks dll Bcl Microsoft 删除 | 更新日期: 2023-09-27 18:30:06

我的ASP.NET Web-Api解决方案出现问题,生成代理无法清理其工作目录,因为某些进程仍在使用库Microsoft.Bcl.Build.Tasks.dll,因此无法将其删除。我在构建代理中所做的唯一事情就是使用标准MSBuild.exe构建解决方案,然后使用MSTest.exe运行一些单元测试。

我注意到Microsoft.Bcl.Build版本1.0.14(im使用的版本)被Microsoft.Net.HttpMicrosoft.Bcl libraries列为依赖项。

我在代理中的工作流程如下:

  • 将git repo克隆到代理
  • 使用msbuild构建解决方案
  • 使用mstest测试溶液
  • 一段时间后,也许10分钟后,我尝试清理当前迭代
  • 由于所描述的错误,文件清理失败

我的问题是:

有人知道为什么这个库会在几分钟后被某个进程使用吗?windows上是否有一个在后台使用此库的通用进程?我会使用流程管理器来查找为什么使用此文件,但这些构建机器被认为是生产箱,几乎不可能获得管理员访问权限。

提前感谢您的帮助!

未能删除Microsoft.Bcl.Build.Tasks.dll

首先通过像LockHunter这样的程序从进程中删除任何使用,然后重新启动VS。这对我来说很有效

如果您的解决方案包含自定义msbuild目标,而同一解决方案中的另一个csproj正在使用这些msbuild对象,那么您将在编译时遇到冲突。实际上,您将尝试在编译过程中编译编译过程的一部分,并且会遇到这些类型的文件锁定错误。解决方法是将自定义msbuild目标项目拆分为一个单独的解决方案,并根据需要进行构建。我认为你需要卸载&重新生成msbuild目标时,请重新加载依赖于它们的项目。有一两次,我需要重新启动VS.

如果你没有添加任何自定义msbuild任务,你可以通过查看安装的NuGet包来找出问题的原因。右键单击您的解决方案,然后单击"管理NuGet软件包"。尝试从"已安装的程序包"列表中删除Microsoft.Bcl.Build。它应该失败,因为它依赖于某些东西。记下依赖于什么包。如果第一个建议没有帮助,请回复一条依赖于它的包的评论,我会看看我是否能找到/记得我以前在哪里见过这个。

这个问题有更多的细节&有关Microsoft.Bcl.Build是什么以及它的用途的链接(如果您感兴趣):Microsoft.Bcl.Build-NuGet包有什么功能?

我刚刚在gitlab构建服务器上遇到了同样的问题,该服务器在每个构建集之前都会执行git fetch

在将来自nuget的Microsoft.Bcy.Async添加到我的项目中后,warning: failed to remove packages/Microsoft.Bcl.Build.1.0.14/tools/Microsoft.Bcl.Build.Tasks.dll 构建失败后的步骤

使用LockHunter,我确定了几个msbuild.exe任务。

有了这些信息,我在这里找到了解决方案,所以:https://stackoverflow.com/a/12193759/98491

长话短说:msbuild过程保持开放,以在构建时提高性能。这可以通过设置环境变量MSBUILDDISABLENODEREUSE=1或将/nodeReuse:false传递到msbuild本身来禁用。

这为我修复了它。