簡體   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