无法删除Microsoft.Bcl.Build.Tasks.dll

tez*_*nia 11 .net c# windows asp.net msbuild

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

我注意到Microsoft.Bcl.Build版本1.0.14(使用的版本)被列为依赖项Microsoft.Net.Http,也是由Microsoft.Bcl libraries.

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

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

我的问题是:

有谁知道为什么这个库甚至在几分钟后被某些进程使用?Windows上是否有一个常见的进程可以在后台使用这个库?我会使用进程管理器来查找此文件正在使用的原因,但这些构建计算机被认为是生产框,几乎不可能获得管理员访问权限.

在此先感谢您的帮助!

sco*_*732 3

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

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

如果您感兴趣,此问题包含有关 Microsoft.Bcl.Build 是什么及其用途的更多详细信息和链接:Microsoft.Bcl.Build NuGet 包的作用是什么?