每当我试图复制4个文件到我的bin文件夹,停止主服务后,我得到一个文件(TexteDll)错误。错误是:

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

这可能是由于一些系统锁定。或者另一个进程正在使用这个DLL。当我在谷歌上搜索时,我发现重新启动系统可以解决这个问题。

有人能给出原因或者解决办法吗?我检查了TexteDll的属性(通用、版本、安全性等)。一切都很正常。


你在运行杀毒软件吗?有可能是AV软件(或其他软件)正在使用文件映射api读取文件,这导致了问题。


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

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


在我的例子中,是资源管理器锁定了调试文件夹中编译的DLL…很奇怪,不是吗?

我是用一个叫解锁的工具发现的。

必须用Unlocker删除,即使它说文件没有锁,我不能删除文件夹,直到我不删除那个文件……

之后,它进行了编译。

编辑:

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


关闭VS上的所有文档,并尝试重新构建。如果不工作,重新启动VS.此问题与DLL文件的锁有关。


Sometimes when you double click on a warning about the referenced assembly version mismatch between two or more projects you forget to close the assembly view window and it stays there among other tabs... so you end up with the assembly being locked by VS itself and it took me quite a lot of time to figure that out :) Be careful with the power VS provides ;) Another dummy scenario. Sometimes simply deleting the whole obj folder or just the file warned as the locked one helps out with this crappy error.


关闭visual studio,删除bin,调试发布文件夹,重新启动visual studio项目。 这解决了我的问题


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


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

在我的例子中,它是我们公司的备份软件,赛门铁克DLO代理。停止它并排除我的杀毒软件中的目录并关闭Visual Studio似乎有效。


我遇到了这个错误,原来问题是FxCop对我的项目运行。我关闭了FxCop,然后我可以再次编译。


在我的情况下,我必须杀死一个挂起的MSBuild.exe进程,该进程正在锁定文件(即使在我关闭Visual Studio之后,它仍然存在)。


我是一名开发人员,不喜欢像Unlocker这样的应用注入到注册表中。 我使用SysInternals进程资源管理器,该进程锁定了我的dll查找>查找句柄或dll [Ctrl-F]并杀死了进程。


如果是web应用程序,删除临时ASP中的文件。NET Files文件夹可能是一个解决方案。


其他人已经确定此错误是由于另一个应用程序对该文件进行了锁定。只是想指出git diff锁文件以及直到你退出它。这就是我患病的原因。


如果你正在使用像AQ Time这样的分析器,它们也可能会锁定文件。在这种情况下,解决方案是重新启动分析器或简单地从分析器卸载/加载相关程序集。 对于AQ时间,我注意到它在一段时间后释放文件,但我不能告诉我的生活超时是什么。 似乎是随机的


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


我也有同样的问题。重新开始对我没用。在任务管理器中运行着一个名为VBSCompiler的进程。我必须结束这个过程来修复这个错误。


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

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


删除obj文件夹并重新构建对我来说很有效


在我的情况下,删除项目根obj文件夹和重建项目解决了我的问题!


我的问题也通过筛选流程资源管理器解决了。然而,我必须杀死的进程是MySQL Notifier.exe,它在关闭所有VS和SQL应用程序后仍然在运行。


我也有同样的问题。我是这样决定的:

打开“任务管理器” 结束任务“Explorer.exe” 点击“文件”——>创建新任务——在“explorer.exe”中输入——> 清洁我的项目,它工作


Andrew Cuthbert在2016年指出,git diff也会锁定文件,直到你退出它。

git diff仍然如此,但对于git 2.23(2019年第三季度),对于外部diff工具(正如Burkart在评论中报道的那样),情况将不再如此。

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

Diff:运行外部Diff前的munmap()文件内容

When running an external diff from, say, a diff tool, it is safe to assume that we want to write the files in question. On Windows, that means that there cannot be any other process holding an open handle to said files, or even just a mapped region. So let's make sure that git diff itself is not holding any open handle to the files in question. In fact, we will just release the file pair right away, as the external diff uses the files we just wrote, so we do not need to hold the file contents in memory anymore. This fixes git-for-windows#1315


运行“git diff”(man),同时允许外部diff处于未合并路径的状态,用于段错误,这已在git 2.30 (Q1 2021)中得到纠正。

参见Jinoh Kang (iamahuman)的commit d668518, commit 2469593(2020年11月6日)。 (由Junio C Hamano - gitster -在commit d5e3532中合并,2020年11月21日)

diff:允许传入NULL到diff_free_filespec_data() 签署人:Jinoh Kang 署名:Junio C Hamano

Commit 3aef54e8b8(“diff: munmap()文件内容在运行外部diff之前”,Git v2.22.1)引入了对run_external_diff中的diff_free_filespec_data的调用,该调用可能传递NULL指针。 通过将diff_free_filespec_data(NULL)设置为no-op来修复此问题并防止将来出现任何此类错误。 修复:3aef54e8b8(“diff: munmap()文件内容在运行外部diff之前”)


以上都没有解决这个问题。

有人在我的解决方案集中有一个项目在构建配置中使用x64 CPU。将其更改为Any CPU会导致构建使用新文件夹。我仍然不知道哪个进程对那个文件有锁。


发生在我把项目目标CPU从“任何CPU”改为“X64”,然后回到“任何CPU”之后。 通过删除Obj文件夹解决了这个问题(对于初学者:不要担心删除Obj文件夹,它将在下一次编译中重新创建)。


这是一个不同的例子。似乎由于正在使用文件句柄,就会发生这种情况。我相信这就是为什么这个答案是有效的。对我来说,我有更多的项目。从命令行打开csproj,忘记了我让它打开。所以把手是锁着的。 Sysinternals有一个简洁的命令行工具,如果您偏爱命令行,则称为handle。你可以输入handle <你想要的任何文件或文件夹的部分名称>,它会告诉你什么程序(如果有的话)正在使用它。

由Sysinternals处理


在我的例子中,问题是visual Studio 2019上的视觉微。它正在抱怨\_vm\compile.vmps.xml文件。可能无法删除/修改。我通过删除项目根目录中的_vm文件夹并重新构建解决方案来修复这个问题。


在我的情况下,我试图发布API到我的本地IIS,我通过简单地删除IIS目标文件夹中的导致文件并再次发布API来修复它,它似乎已经损坏或其他东西。


我在windows 10, Visual Studio 2022, Visual Basic项目上遇到过。进程资源管理器“查找句柄/DLL”显示了4行devenv.exe锁定文件。

除了杀死devenv.exe,我还可以通过简单地删除包含锁定文件的文件夹来修复这个问题(在这种情况下,它是bin\Debug)。这很奇怪,因为我不允许删除锁定的文件,但我可以删除整个文件夹。


不知何故,一个简单的重启解决了我的问题。


在我的情况下,仍然有VS2022 (devenv.exe)运行的“不可见”实例。它被列在任务管理器中,状态=挂起,但在任务栏或其他任何地方都看不到相应的窗口。在终止该进程之后,问题就解决了。


我尝试了以上的方法,但对我不起作用。我遵循的几个步骤:

关闭所有VS实例,重新打开。 关闭build.exe和explorer.exe进程。 删除项目中的bin文件夹。

对我有用的是—— 重新启动我的机器。