可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I have a project in C# and I get this error every time I try to compile the project:
(Unable to copy file "obj\Debug\Project1.exe" to "bin\Debug\Project1.exe". The process cannot access the file 'bin\Debug\Project1.exe' because it is being used by another process.)
...so I have to close the process from the task manager. my project is only one form and there is no multi-threading.
what is the solution (without restarting VS or Killing the process)?
this is the error code we have
how can we solve this problem?
回答1:
@Udpate: Since the time I was first posting this 'answer', I tend to another explanation to the problem. The issue since than happened more and more often outside of Visual Studio also - while trying to copy an .exe file from one folder to another. While in the first place Windows did not allow to copy(!) an .exe file (it was first asking me for administrative rights but refused to copy it afterwards anyway) it still showed up in the explorer. But after a while - without any further action taken, it disappeared magically. Just like the problem in the question always seems to solve itself after a while. So i assume, the problem is more related to a delayed deletion of the project output file and less a buggy VS. I apologize for any unjustified suspicion. :|
This gives the search for a solution a complete different direction, I guess. Did find that link and will update on any progress:
https://superuser.com/questions/234569/windows-7-delayed-file-delete
========================================================================
This is a known bug in VS. I discovered it very often - mostly in VS2010 (with/without SP1). Several "solutions" are recommended. Some of them, which kind of helped for me:
- Delete the .suo file in your project dir. Eventually need to create your whole solution from scratch.
- Close any Windows Form Designers may remain open.
- Use a prebuild script, which deletes the target from the output dir.
- Disable the VS hosting process.
None of these really fixes the bug. But it may brings the VS back to a usable state - until a true solution is provided by MS (if ever will).
http://social.msdn.microsoft.com/Forums/en/vsdebug/thread/cea5e4b2-5b33-453c-bffb-8da9f1a1fa4a
http://social.msdn.microsoft.com/Forums/en/vbide/thread/cd12f3c7-de96-4353-adce-23975e30933f
回答2:
I can confirm this bug exists in VS 2012 Update 2 also.
My work-around is to:
- Clean Solution (and do nothing else)
- Close all open documents/files in the solution
- Exit VS 2012
- Run VS 2012
- Build Solution
I don't know if this is relevant or not, but my project uses "Linked" in class files from other projects - it's a Silverlight 5 project and the only way to share a class that is .NET and SL compatible is to link the files.
Something to consider ... look for linked files across projects in a single solution.
回答3:
This should work.
Go to your project properties.
Inside Build Events, under Pre-build event command line, add these two lines of code:
if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if exist "$(TargetPath)" if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"
回答4:
The real problem isn't the error you're getting; it's that the application isn't cleaning up after itself.
It's either holding on to references, not freeing resources, or something else that's causing the process to not end when it's being told to close. Fix up that issue and this problem will resolve itself. We can't really help you with that unless you post your code (and at this point, if you need help with that, you should start a new question).
回答5:
If you look in the obj directory, and you don't see your .exe, it's possible that Avast! or other antivirus is deleting it. I would actually see the .exe show up and then disappear. As soon as I turned off Avast!, problem solved.
VS2010 throwing "Could not copy the file "obj\x86\Debug\[file].exe" because it was not found."
回答6:
This is happening because [yourProjectName].exe
process is not closing after finishing debugging.
There are two solutions to this problem.
Every time you make change to application, Go to Task Manager -> Processes -> [yourProjectName].exe, end this process. You have to end this process every time you make changes to system.
Add a exit button in your application to exit window and add these line to click event
System.Diagnostics.Process.GetCurrentProcess().Kill();
Application.Exit();
回答7:
I had to go into windows explorer and delete the bin/debug folder as well as the obj/debug folders. Then I cleaned & rebuilt the project.
回答8:
After seeing a similar error in visual studios 2012 out of no where. I have found that that going to the root folder of the project and right clicking on it I unchecked read only and this error went away. Apparently TFS sometimes will made a folder read only. Hopefully this will help anyone with a similar issue. Thanks
回答9:
This happened to me at VS 2010 and Win 7..
Case :
- I can not Rebuild with Debug Configuration manager, but I can rebuild with Release Configuration manager
What I have tried:
- Check my account type at control panel - user account --> My Account is Administrator
- Set the bin folder not read only
- Add security at bin folder to Everyone
If All that way is still not working.
Then, the last way to try:
- close solution
- close visual studio
- start - shutdown
- press power button to turn on the computer
- login to your account which has administrator previlege at user type
- reopen solution
- rebuild
- that way working. All people call this way as Reset Computer
回答10:
- Close your project
- Delete bin folder
i find it work, :)
回答11:
If other suggestions did not work for you the solution proposed at this URL helped me:
http://weblogs.asp.net/fmarguerie/archive/2009/01/29/life-changer-xaml-tip-for-visual-studio.aspx
this question is also related to this problem:
VS2012 - XDesProc hangs when Xaml file is opened
by some reason when I open XAML file and then built, XDesProc process was staying in memory while using dll file of main assembly
回答12:
Before rebuild the solution, clear the project, stop the IIS and open the "bin" folder property. Uncheck the Read-only Attribute in general tab then rebuild.
回答13:
I had same problem, after read your answers , went to Task Manager
and searched for app.exe
because i believe maybe it doesn't close .
And found it , select it and do END TASK
.my problem solved.
回答14:
I found that ending all msbuild.exe tasks (in Task Manager) fixed the issue with VS2012.
回答15:
Rename the assembly to a different name to solve this issue.
回答16:
Run Visual Studio as Administrator
回答17:
We recently experienced this on a WinPhone 8 project, in VS 2012 Update 2.
Inexplicably, the cause was using the Tuple type. Removing the code that used a Tuple the problem went away. Add the code back the problem returned.
回答18:
This will Sound crazy, when ever i build the project the error will be displayed and the avast antivirus will show it as malicious attempt and the project does not run.i just simply disable my antivirus and build my solution again the missing .EXE file has been Created and the project has been successfully executed.
Or you can try this
Visual Studio build fails: unable to copy exe-file from obj\debug to bin\debug
回答19:
I solved this by killing XDesProc
which had a handle on the DLL it couldn't delete.
回答20:
Well i have the same problem, my way to fix it was to stop and disable the "application experience" service in Windows.
回答21:
Not a direct answer to your question..
One scenario when this can come is listed below -
If your application is under Debugging process - say by "Attach to Process" debugging, this error may come
回答22:
If this error was encountered, you can proceed as the following
- End the
msbuild.exe
task
- End the
explorer.exe
task
- Run the
explorer.exe
task again
回答23:
for me it was the antivirus. Just add visual studio project or entire parent folder to Antivirus exclusion list or you can also add file extension as exclusion and this method worked for me in visual studio 2010/2012
回答24:
Solution1:
- Close the project.
- Delete the bin folder.
- Open the project.
- Build the project.
Solution2:
Add the following code in pre-build event:
attrib -r $(OutDir)*..\* /s
This command line code will remove the ready-only attribute of "bin" folder. Now visual studio can easily delete and copy new dlls.
回答25:
I struggeled with this since years.
I finally downloaded LockHunter to find out who locked the file.
In my case it was MBAM.
Once I added my project's directory to MBAMs exclusion list, I didn't have this problem anymore.
回答26:
A very simple solution is to open the Task Manager (CTRL + ALT + DELETE), go to Processes tab and search by name the processes with your project name that are still running. Kill all the processes and go on ! :)
回答27:
after day with search and build and rebuild i found that you just need to turn off turn on the visual studio its look like it catch the service in different thread
回答28:
Mine got solved by:
- Clean solution
- Close all processes depending on VS (Current instances).
- Rebuild