繁体   English   中英

由于 vmwp.exe 文件锁定,Visual Studio 构建在将文件复制到 bin 目录时失败

[英]Visual studio build fails while copying files to the bin directory due to file locks by vmwp.exe

我在 Docker 容器中运行我的开发环境。 由于我已经完成了一些更新,因此在尝试重建在 Docker 容器中运行的项目时遇到了一些困难。

我的项目在运行 IIS 的 Windows 服务器核心 Docker 容器中运行,并且我正在从主机上的共享卷运行项目。 我能够在启动 docker 容器之前构建项目,但是在启动 docker 容器之后构建失败并出现以下错误:

Could not copy "C:\path\to\dll\name.dll" to "bin\name.dll". Exceeded retry count of 10. Failed. The file is locked by: "vmwp.exe (22604), vmmem (10488)"

似乎 Hyper-V 进程正在锁定 DLL 文件。 这显然不是以前的情况,这似乎与我所做的一些 Docker 或 Windows 更新有关。 我该如何解决这个问题? 我是否需要更改构建应用程序并在我的 Docker 容器中运行它的过程?

我已经搜索了一段时间,但我找不到太多关于这个特定问题的信息。 任何帮助,将不胜感激。 提前致谢!

我遇到了类似的问题。 通过从 docker-for-windows 界面停止/删除正在运行的应用程序容器来解决。 docker rm -f也可以。

  1. 如果您在两个环境中使用 Docker Windows 容器,请确保您至少有 Windows 10.0.1809 在这两个环境(您的物理机器和它的顶部)上运行 CMD。
  2. 运行 docker 时对进程使用隔离标志:--isolation 进程。

在物理机上,两个 vmxxx(较低和较高 PID)(不记得确切名称)进程保留 *.dll 文件(构建在 docker 端进行,其中使用了构建工具 2019)。

潜在的解决方案:

  1. 第一个 MSbuild 发生错误,因为 msbuild 尝试删除文件 - 访问被拒绝 - 可能是这个 vm 进程处理文件。
  2. 第二个 Msbuild 发生错误(第一个 vmxxx 导致该错误)表明由于系统锁定 (4),无法从一个方向复制文件到另一个方向。

两个 vmxxx 进程在 docker 上构建期间保留这两个 dll 文件。 一个 vmxxx 的 PID 数量较多,而第二个 vmxxx 的 PID 数量较少。

当您从 docker 容器构建项目时,隔离应该注意流程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM