开发者

Can't compile because Visual Studio is using my DLL

开发者 https://www.devze.com 2023-03-26 02:22 出处:网络
I have a rather large .NET 2.0 solution (151 projects) in Visual Studio 2008.Often times when I do a build (even for just 开发者_StackOverflowone project) in VS I get an error saying that it can\'t co

I have a rather large .NET 2.0 solution (151 projects) in Visual Studio 2008. Often times when I do a build (even for just 开发者_StackOverflowone project) in VS I get an error saying that it can't copy one of my DLL assemblies to the output directory because it is in use. I don't have any other processes running in the background or existing debug sessions going that would be using this assembly. If I open up Process Explorer and do a search for this assembly name Visual Studio (devenv.exe) comes up as the only result. Looking at the results Visual Studio has my assembly loaded as a DLL for some reason. Closing the solution and reopening it doesn't solve the problem. I have to completely exit out of VS altogether to get around this issue which is quite disruptive. Does anyone have any idea what is going on? I'm running on Window 7, I don't think I saw this issue on Windows XP.

I am running Visual Studio 2008 Version 9.0.30729.1 SP. I'm also running ReSharper 6 if that matters.


Does anyone have any idea what is going on? I'm running on Window 7, I don't think I saw this issue on Windows XP.

I run into this problem all the time on Windows XP and its not even localized to Visual Studio 2008. What always works for me is I simply clean all solutions, this gets rid of any file that might be in my system's memory, because of Visual Studio.

Visual Studio keeps any your references in memory, so when one of those references is updated, Visual Studio has to release it from memory. If it really happens more then "once in awhile" then you might look at trying to reduce the number of solutions in your project.


Use the following command and place it in "Pre Build Events" of visual studio:

if exist "$(TargetPath).locked" del "$(TargetPath).locked"

Hope this would help you.


Try to disable the hosting process:

Open an executable project in Visual Studio. Projects that do not produce executables (for example, class library or service projects) do not have this option.

  1. On the Project menu, click Properties.

  2. Click the Debug tab.

  3. Clear the Enable the Visual Studio hosting process check box.


Kill process VBCSCompiler.exe and rebuild.


I would guess that the dll is being used by the (ProjectName).vshost.exe process. You might try killing that process and see if that works. Probably not the best thing to do, but it might be easier than restarting VS.


I would try the "Clean Solution" option before you build. This can clean up any extraneous temp files that could be hanging around from a program crash.


I have no idea about why this works, but I had the same problem and when I changed the Starting Project to the project I wanted to build everything worked again.

When I change the Startup project again to the right one I cannot build the other project anymore due to the file being in use, so looks like a bug at the Visual Studio IDE.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号