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


210

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

Cannot copy TexteDll: The requested operation cannot be performed on a file 
with a user-mapped section open

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

有人可以为此提出建议或解决方案吗?我检查了TexteDll的属性(常规,版本,安全性等)。一切似乎正常。



8
实际上,这个问题还有更多的“重复项”(例如:stackoverflow.com/questions/1818076/…)-问题是,每次根本原因都不相同。
MaciekTalaska 2012年

6
下次尝试使用Microsoft网站上的“进程浏览器”。它具有称为“查找手柄”的功能。在其中搜索文件,它将显示该文件上有哪个进程的句柄。然后,您可以开始调查为什么该程序具有该访问权限。顺便说一句,停止服务并不一定意味着托管服务的可执行文件将结束。可执行文件可以托管多个服务。在最坏的情况下,许多使用大量内存的.net服务在释放该内存后往往会终止,而这种情况有时会在服务停止事件后的几分钟发生。
埃尔多安·库尔

3
嘿嘿Visual Studio锁定了我的DLL。关闭了Visual Studio,并尝试重建解决方案,该解决方案成功了。
Leniel Maccaferri

这显然是内存冲突。对象的特定“实例”已映射了一些已分配的位存储器,然后后来发现分配给它的存储器(静态?)已被映射到其他地方,可能具有不同级别的系统访问权限。
ouflak 2014年

Answers:


177

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

我发现使用名为Unlocker的工具。

不得不用Unlocker删除,即使它说没有对该文件的锁定,我也无法删除该文件夹,直到我没有删除那个文件为止。

之后编译。

编辑:

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


33
我在许多Visual Studio窗口之一中也打开了dlo。感谢您发布该更新。
ptfaulkner 2013年

3
同样的事情,以某种方式在编辑器的文本窗口中打开了危险的DLL。
2013年

3
DLL也可以在VS中作为选项卡打开!谢谢!
康奈尔2014年

5
全面披露:指向“ Unlocker”的链接是整个间谍软件。即使您取消选中所有不需要的框,它也会安装各种工具栏和废话。
蒂姆(Tim)

7
使用Unlocker的Process Explorer instread。PE运行后,转到查找->查找句柄或Dll,然后粘贴锁定文件的名称。它将显示哪个进程将其锁定。如果确定可以这样做,请杀死它,并应解决问题。
Nikita G.

71
  • 有时,当您双击有关两个或多个项目之间引用的程序集版本不匹配的警告时,您会忘记关闭程序集视图窗口,并且该窗口停留在其他选项卡中……因此最终,程序集被VS本身和我花了很多时间才弄清楚:)

    注意VS提供的功能;)

  • 另一个虚拟场景。有时只是删除整个obj文件夹,或者只是删除警告的文件,因为锁定的文件夹会帮助您解决此糟糕的错误。

2
为我排序了...我什至没有重启系统,但是VS重新打开了程序集视图窗口。关闭所有选项卡即可完成工作。欢呼声
Dave Lawrence

35

关闭VS上的所有文档,然后尝试重新生成。如果不起作用,请重新启动VS。此问题与DLL文件的锁定有关。


3
同样,VS也有些古怪。重新启动为我排序。
PJUK

1
这对我有用。在我的特殊情况下很奇怪。我已经在VS环境之外独立执行了exe。让它整夜运行(内存测试-通过了),早上将其关闭,进行了一些小的代码更改,并因此突然无法完成构建。奇怪的是,这种记忆似乎像这样发生冲突。
ouflak 2014年

讨厌,谢谢,一个打开的文件引起了这个错误,什么BS!
布莱恩·奥格登

“关闭所有文档”并进行重建实际上对我有用!:o
Antoine Meltzheim

11

关闭Visual Studio,删除bin,调试发布文件夹,然后再次启动Visual Studio项目。解决了我的问题


这对我有用!谢谢!我重命名了目录,以防万一,并且有效。
DavidScherer

10

我遇到了同样的问题,在我看来,现有的输出文件已被其他应用程序锁定。

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


10

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


1
发现它被VS进程锁定,而VS进程在VS关闭时并未死。
Yoztastic

2
即使在关闭DevEnv并且Task Manager没有显示它之后,Process Explorer也显示了几个DevEnv Suspended实例。杀死这些,它奏效了。
DeclanMcD

1
这是最正确的答案,因为它显示了如何查找哪个进程正在锁定文件,而不是仅仅说“在我的情况下,这是由于X引起的”。Windows上的每个开发人员都可以从向他们的工具栏中添加procexp和procmon中受益!
Matt Wanchap

9

其他人已经确定此错误是由于另一个应用程序对该文件有锁定所致。只是想指出一点,它git diff也会锁定文件,直到您退出它为止。这就是造成我这种情况的原因。


对我来说也是一样。忘了我没有退出差异。不幸的是,直到关闭其他窗口并看到它仍在差异中,我才看到这个答案。然后确保我没有发布重复的答案,所以+1 :)
codeMagic

1
@codeMagic Git 2.23(Q3 2019)将避免这种陷阱。请参阅下面的答案
VonC

9

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

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

我还必须从任务管理器重新启动资源管理器进程。就我而言,我已经在资源管理器的“预览”区域中查看了“问题”文件。这似乎还会不时地锁定文件而不会释放它们。关闭所有资源管理器窗口没有帮助。不得不重启进程。
gehho

最后!谢谢。
TheJack

6

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


6

以我为例,我必须杀死一个MSBuild.exe锁定文件的挂起进程(即使在关闭Visual Studio之后它也在那里)。


1
你钉了 非常感谢!
拉里


3

我有同样的问题。重新启动对我不起作用。任务管理器中正在运行一个名为VBSCompiler的进程。我不得不结束修复此错误的过程。


您也可以清洗溶液
并重

3

这里发布的解决方案都没有对我有用。它是devenv.exe(Visual Studio)锁定文件,但是如果我重新启动它,它将重新锁定它。

奇怪的是,Windows不允许我删除文件(到回收站),但是Shift + Delete(永久删除)有效。


2

关闭Visual Studio并以管理员身份运行。解决了我的问题。


我在rstudio中构建闪亮的应用程序时遇到此错误,因此许多答案对我没有帮助。但是我看到了这一点,并尝试以管理员身份重新启动rstudio,并且它起作用了。然后,当我回到以用户身份运行时,它又开始工作了。
保罗

2

对我来说,解决方案是关闭VS的所有实例,并杀死所有挂起的devenv.exe进程。


2

对我来说,解决方案是重新启动计算机。


2

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

Git 2.23(2019年第三季度)将不是这种情况

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

diffmunmap()运行外部差异之前的文件内容

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

因此,请确保其git diff本身没有持有任何打开文件的句柄。

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

这修复了git-for-windows#1315


1

使用Ant构建Dot Net应用程序时,我看到了这些错误。

就我而言,这是我们的公司备份软件Symantec DLO Agent。停止它并在我的防病毒软件中排除该目录,然后关闭Visual Studio似乎可以正常工作。



0

我遇到此错误,结果发现问题是FxCop针对我的项目运行。我关闭了FxCop,然后可以再次编译。


0

如果是Web应用程序,则可以删除“临时ASP.NET文件”文件夹中的文件。


0

如果您使用的是AQ Time之类的探查器,则这些探查器也可能会锁定文件。在这种情况下,解决方案是重新启动探查器,或者简单地从探查器中卸载/加载有问题的组件。对于“ AQ时间”,我注意到它会在一段时间后释放文件,但是我无法终生知道超时是多少。似乎是随机的



0

我遇到了这个问题,原因是有问题的“更多” vs文件在另一个控制台中运行。哎呀。


0

以上均未解决此问题。

有人在我的解决方案中设置了一个项目,以在构建配置中使用x64 CPU。将其更改为任何CPU都会导致生成使用新文件夹。我仍然不知道哪个进程对该文件具有锁定。



0

就我而言,我只需要关闭所有实例并复制我的根应用程序文件夹,然后将其粘贴到其他位置,然后在VS中打开解决方案即可。


-1

通过在Process Explorer中进行筛选也解决了我的问题。但是,我必须杀死的进程是MySQL Notifier.exe,它在关闭所有VS和SQL应用程序后仍在运行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.