无法对打开了用户映射部分的文件执行请求的操作

pet*_*ter 197 windows dll

每当我尝试将4个文件复制到我的bin文件夹中时,在停止主服务后,我收到一个文件错误(TexteDll).错误是:

Cannot copy TexteDll: The requested operation cannot be performed on a file 
with a user-mapped section open
Run Code Online (Sandbox Code Playgroud)

这可能是由于某些系统锁定.或者也许另一个进程正在使用此DLL.当我用Google搜索时,我发现重新启动系统可能会解决此问题.

有人可以为此提出原因或解决方案吗?我检查了TexteDll的属性(通用,版本,安全性等).一切看起来都很正常.

Dan*_*obo 174

在我的情况下,资源管理器锁定了在Debug文件夹中编译的DLL ...奇怪,不是吗?

我发现使用了一个名为Unlocker的工具.

不得不用Unlocker删除,即使它说文件没有锁定,我也无法删除该文件夹,直到我没有删除该单个文件...

之后编译.

编辑:

我发现为什么在我的情况下这发生了.我在Visual Studio中的文本编辑器中打开了DLL ...

  • 我打开了我的许多视觉工作室窗户中的一个dlo.感谢您发布该更新. (33认同)
  • 完全披露:"Unlocker"的链接是完全间谍软件.它会安装各种工具栏和垃圾,即使您取消选中所有不想要它们的方框. (5认同)
  • 使用解锁器的[Process Explorer](https://technet.microsoft.com/en-us/sysinternals/processexplorer.aspx)instread.PE运行后,转到Find - > Find Handle或Dll并粘贴锁定文件的名称.它将显示锁定它的进程.如果您确定可以做到这一点并且应该解决问题,请将其杀死. (4认同)
  • 同样的事情,不知何故,危险的DLL在编辑器的文本窗口中打开. (3认同)
  • DLL也在VS中打开了一个标签!谢谢! (3认同)

Arm*_*ian 71

  • 有时当您双击关于两个或多个项目之间引用的程序集版本不匹配的警告时,您忘记关闭程序集视图窗口并且它在其他选项卡中保持不变...因此您最终将程序集锁定为VS本身和我花了很多时间才弄明白:)

    小心VS提供的电源;)

  • 另一个虚拟场景.有时只是删除整个obj文件夹或只是被警告为锁定文件的文件有助于解决这个糟糕的错误.

  • 为我排序...我甚至做了系统重启但VS重新打开了程序集视图窗口.关闭所有标签完成了这项工作.干杯 (2认同)

cih*_*a87 34

关闭VS上的所有文档并尝试重新生成.如果不起作用重启VS. 此问题与DLL文件的锁定有关.

  • 同样,与VS有些奇怪.重新启动为我排序. (3认同)
  • 我以前从未见过这个,这个答案对我有用. (2认同)

小智 11

关闭visual studio,删除bin,调试release文件夹,然后再次启动visual studio项目.这解决了我的问题


小智 10

我有同样的问题,在我的情况下,似乎现有的输出文件被其他应用程序锁定.

您可以使用OpenedFilesView检查哪个应用程序正在锁定您的输出文件:http://www.nirsoft.net/utils/opened_files_view.html


and*_*ert 9

其他人已经确定此错误是由于另一个应用程序锁定了该文件.只是想指出git diff锁定文件,直到你退出它.这就是我的情况造成这种情况的原因.


gun*_*sus 8

我是开发人员,不喜欢像Unlocker那样注入Registery的应用程序.我使用了SysInternals Process Explorer 来锁定我的dll Find > Find Handle or Dll [Ctrl-F]并杀死了进程.

  • 发现它被一个VS进程锁定,当VS关闭时该进程并没有死掉。 (2认同)
  • 即使在DevEnv关闭且任务管理器没有显示它之后,Process Explorer也显示了几个DevEnv Suspended实例.杀了这些并且它起作用了. (2认同)
  • 这是最正确的答案,因为它显示_如何_查找哪个进程正在锁定文件,而不是仅仅说“在我的情况下是由于 X”。将 procexp 和 procmon 添加到他们的工具箱中,每个 Windows 开发人员都会受益! (2认同)

t3c*_*b0t 6

在我的情况下,我不得不杀死一个MSBuild.exe锁定文件的挂起进程(即使在我关闭Visual Studio之后它也存在).


Eoi*_*ell 5

你在运行任何防病毒软件吗?AV软件(或其他一些软件)可能正在使用导致问题的文件映射API读取文件.


小智 5

我遇到过同样的问题。我如何解决的是:

  1. 打开“任务管理器”
  2. 结束任务“ Explorer.exe”
  3. 单击“文件”->创建新任务-键入“ explorer.exe”->确定
  4. 清理我的项目,它可以工作


Von*_*onC 5

指出,在2016年由安德鲁·库斯伯特git diff锁文件,以及直到退出它出来。

Git 2.23(2019 年第三季度)不会出现这种情况。

请参阅Johannes Schindelin ( ) 的commit 3aef54e(2019 年 7 月 11 日(由Junio C Hamano合并-- --d9beb46 提交中,2019 年 7 月 25 日)dscho
gitster

diff:munmap()运行外部差异之前的文件内容

例如,从 a 运行外部差异时,diff tool可以安全地假设我们要写入有问题的文件。
在 Windows 上,这意味着不能有任何其他进程持有所述文件的打开句柄,甚至只是一个映射区域。

因此,让我们确保它git diff本身没有持有相关文件的任何打开句柄。

实际上,我们会立即释放文件对,因为外部 diff 使用我们刚刚编写的文件,因此我们不再需要将文件内容保存在内存中。

这修复了git-for-windows#1315


运行“ git diffman),同时允许外部差异处于未合并路径的状态下用于段错误,这已在 Git 2.30(2021 年第一季度)中得到纠正。

请参阅Jinoh Kang ( ) 的commit d668518commit 2469593(2020 年 11 月 6 日(由Junio C Hamano合并-- --d5e3532 提交中,2020 年 11 月 21 日)iamahuman
gitster

diff: 允许传递NULLdiff_free_filespec_data()

签字人:Jinoh Kang
签字人:Junio C Hamano

提交3aef54e8b8(“ diffmunmap()介绍了呼叫,Git的v2.22.1运行外置的区别之前的文件内容”),diff_free_filespec_datarun_external_diff,其中可以通过NULL指针。

修复此问题并通过进行diff_free_filespec_data(NULL)无操作来防止将来出现任何此类错误。

修复:3aef54e8b8(“差异:运行外部差异之前的munmap()文件内容”)