每当我尝试将4个文件复制到我的bin文件夹中时,在停止主服务后,我收到一个文件错误(TexteDll)。错误是:
Cannot copy TexteDll: The requested operation cannot be performed on a file
with a user-mapped section open
这可能是由于某些系统锁定造成的。或者也许另一个进程正在使用此DLL。当我用Google搜索时,我发现重新启动系统可能会解决此问题。
有人能为此提出原因或解决方案吗?我检查了TexteDll的属性(一般,版本,安全性等)。一切看起来都很正常。
答案 0 :(得分:168)
在我的情况下,资源管理器锁定了在Debug文件夹中编译的DLL ...奇怪,不是吗?
我发现了一个名为Unlocker的工具。
不得不使用Unlocker删除,即使它说文件没有锁定,我也无法删除该文件夹,直到我没有删除该单个文件...
之后编译。
编辑:
我发现为什么在我的情况下这种情况正在发生。我在Visual Studio中的文本编辑器中打开了DLL ...
答案 1 :(得分:70)
有时双击有关引用的警告 您忘记的两个或多个项目之间的程序集版本不匹配 关闭装配视图窗口,它保持在那里 标签...所以你最终得到VS锁定的程序集 本身,我花了很多时间才弄明白:)
小心VS提供的电源;)
答案 2 :(得分:32)
关闭VS上的所有文档并尝试重新生成。如果不起作用重启VS.此问题与DLL文件的锁定有关。
答案 3 :(得分:10)
我遇到了同样的问题,在我看来,现有的输出文件似乎被其他应用程序锁定了。
您可以使用OpenedFilesView检查哪个应用程序正在锁定您的输出文件: http://www.nirsoft.net/utils/opened_files_view.html
答案 4 :(得分:10)
关闭visual studio,删除bin,调试版本文件夹,然后重新启动visual studio项目。 解决了我的问题
答案 5 :(得分:9)
其他人已经确定此错误是由于另一个应用程序锁定了该文件。只是想指出git diff
锁定文件,直到你退出它。这就是造成这种情况的原因。
答案 6 :(得分:8)
我是开发人员,不喜欢像Unlocker那样注入Registery的应用程序。
我使用SysInternals Process Explorer进程锁定了我的dll Find > Find Handle or Dll [Ctrl-F]
并杀死了该进程。
答案 7 :(得分:6)
在我的情况下,我不得不杀死一个锁定文件的挂起MSBuild.exe
进程(即使在我关闭Visual Studio之后它也存在)。
答案 8 :(得分:5)
您是否正在运行任何防病毒软件。 AV软件(或其他一些软件)可能使用导致问题的文件映射API来读取文件。
答案 9 :(得分:3)
我有同样的问题。我的解决方法是:
答案 10 :(得分:3)
我遇到了同样的问题。重启对我不起作用。在任务管理器中运行了一个名为VBSCompiler的进程。我不得不结束修复此错误的过程。
答案 11 :(得分:2)
关闭Visual Studio并以管理员身份运行它。它解决了我的问题。
答案 12 :(得分:2)
删除obj文件夹并重建为我工作
答案 13 :(得分:2)
此处发布的解决方案均不适合我。它是devenv.exe(Visual Studio)锁定文件,但是如果我重新启动它,它会重新锁定它。
奇怪的是,Windows不允许我删除文件(到回收站),但Shift + Delete(永久删除)有效。
答案 14 :(得分:2)
我的解决方案是关闭VS的所有实例并杀死所有挂起的devenv.exe进程。
答案 15 :(得分:1)
我的解决方案是重新启动计算机。
答案 16 :(得分:1)
pointed out在Andrew Cuthbert上,git diff也会锁定文件,直到您退出文件为止。
Git 2.23(2019年第三季度)并非如此
请参见commit 3aef54e的Johannes Schindelin (dscho
)(2019年7月11日)。
(由Junio C Hamano -- gitster
--在commit d9beb46中合并,2019年7月25日)
import React, { Component } from 'react'; import './App.css'; import Form from "./Components/Form" import Overcast from "./Components/Overcast" import Forecast from "./Components/Forecast" class App extends Component { constructor(props) { super() this.state = { forecasts: [{}], selectedCity: 1 } this.handleCityChange = this.handleCityChange.bind(this) this.fetchForeacst = this.fetchForeacst.bind(this) } componentDidMount() { var today = new Date() var day = String(today.getDate()).padStart(2, '0') var month = String(today.getMonth() + 1).padStart(2, '0') var year = String(today.getFullYear()) today = year + '-' + month + '-' + day this.fetchForeacst(today) } componentDidUpdate() { var today = new Date() var day = String(today.getDate()).padStart(2, '0') var month = String(today.getMonth() + 1).padStart(2, '0') var year = String(today.getFullYear()) today = year + '-' + month + '-' + day this.fetchForeacst(today) } fetchForeacst(date) { const WEATHER_API = 'http://dev-weather-api.azurewebsites.net/api/city/' + this.state.selectedCity + '/weather?date=' + date + '' fetch(WEATHER_API) .then(response => response.json()) .then(data => this.setState({forecasts: data})) } handleCityChange(city) { this.setState({selectedCity: city}) } render() { return ( <div className="App"> <Form handleChange={this.handleCityChange}/> <Overcast forecast={this.state.forecasts[0]} /> <Forecast forecasts={this.state.forecasts} /> </div> ) } } export default App;
:运行外部差异前的diff
文件内容例如,运行
munmap()
的外部差异时, 假设我们要编写有问题的文件。
在Windows上,这意味着没有任何其他进程可以打开打开的句柄来 这些文件,甚至只是一个映射区域。因此,请确保
diff tool
本身没有为相关文件保留任何打开的句柄。实际上,我们将立即释放文件对,因为外部diff使用我们刚刚编写的文件,因此我们不再需要将文件内容保存在内存中。
答案 17 :(得分:1)
在我的案例中删除了项目根目录中的obj文件夹,重建项目解决了我的问题!!!
答案 18 :(得分:1)
在使用Ant构建Dot Net应用程序时,我看到了这些错误。
就我而言,它是我们的企业备份软件Symantec DLO Agent。停止它并排除我的防病毒软件中的目录并关闭Visual Studio似乎可以正常工作。
答案 19 :(得分:0)
我今天也遇到了同样的错误。我通过重新构建项目解决了这个问题。
答案 20 :(得分:0)
如果您正在使用像AQ Time这样的分析器,这些也可能是锁定文件。在这种情况下,解决方案是重新启动分析器或简单地从分析器卸载/加载有问题的组件。 对于AQ Time,我注意到它会在一段时间后释放文件,但我不能告诉我生命中的那个超时是什么。 似乎是随机的
答案 21 :(得分:0)
如果是Web应用程序,则删除Temporary ASP.NET Files文件夹中的文件可能是一种解决方案。
答案 22 :(得分:0)
我遇到了这个错误,原因是相关的“更多” vs文件在另一个控制台中运行。糟糕!
答案 23 :(得分:0)
我遇到了这个错误,事实证明问题是FxCop正在针对我的项目运行。我关闭了FxCop然后我可以再次编译。
答案 24 :(得分:0)
以上均未解决此问题。
有人在我的解决方案中设置了一个项目,以在构建配置中使用x64 CPU。将其更改为任何CPU都会导致生成使用新文件夹。我仍然不知道哪个进程对该文件具有锁定。
答案 25 :(得分:0)
我有同样的问题。我从临时文件夹中删除了dll,删除了只读访问权限并重新启动了计算机,并使它正常工作。
答案 26 :(得分:0)
就我而言,我只需要关闭所有实例,然后复制我的根应用程序文件夹并将其粘贴到其他位置,然后在VS中打开解决方案即可。...
答案 27 :(得分:0)
发生在我将项目目标 CPU 从“Any CPU
”更改为“X64
”然后又回到“Any CPU
”之后。
删除Obj
文件夹解决了(初学者不用担心删除obj文件夹,下次编译会重新创建)
答案 28 :(得分:0)
这是另一回事。似乎由于正在使用文件句柄而可能发生这种情况。我相信这就是 this answer 有效的原因。对我来说,我从命令行输入了 more project.csproj
,却忘记了我没有打开它。所以把手被锁定以供阅读。
如果您偏爱命令行,Sysinternals 有一个简洁的命令行工具,称为 handle
。您可以输入 handle <partial name of whatever file or folder you want>
,它会告诉您正在使用它的程序(如果有)。
答案 29 :(得分:0)
就我而言,问题出在 Visual Studio 2019 上的 Visual micro。它抱怨 \_vm\compile.vmps.xml
文件。可能无法删除/修改它。我通过删除项目根目录中的 _vm
文件夹并重新构建解决方案来解决此问题。
答案 30 :(得分:0)
就我而言,我试图将 API 发布到我的本地 IIS,我通过简单地删除 IIS 目标文件夹中的导致文件并再次发布 API 来修复它,它似乎已损坏或什么。
答案 31 :(得分:-1)
我的问题也通过在Process Explorer中进行筛选得以解决。但是,我必须杀死的过程是关闭所有VS和SQL应用程序后仍在运行的MySQL Notifier.exe。