Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.Net cannot create/shadow copy

I get this error repeatedly when developing ASP.Net applications:

  Cannot create/shadow copy 'XXXXX' when that file already exists 

Where XXXXX is a random DLL. Typically the DLL is one of the DLLs from Microsoft's Enterprise Library, but it varies.

It's really random, and it's very frustrating. I will go hours without getting the error, and then get this error every 10-20 minutes.

I've seen several solutions. For instance, this question. I've tried using Clean Solution option, and I've also simply restarted my local IIS. However, it still occurs at the same random but persistent frequency.

I've also seen many people mention using this option in the config file:

<hostingEnvironment shadowCopyBinAssemblies="false" /> 

However, others have mentioned it being problematic, and it should definitely not be used in production.

So, should I just give up and try the shadowCopyBinAssemblies option? (And make sure not to copy this change to other environments.) Am I the only one who gets this issue that often?

Note: I am using Visual Studio 2008.

like image 548
david.mchonechase Avatar asked Jun 17 '09 13:06

david.mchonechase


2 Answers

Wait somewhere between 10-30 seconds and hit refresh. For some reason this always works for me.

like image 116
joshcomley Avatar answered Oct 05 '22 06:10

joshcomley


The following workarounds come from this now defunct connect issue:

  • add <hostingEnvironment shadowCopyBinAssemblies="false" /> to the <system.web> section of your web.config file.
  • Restart Cassini when you get the problem
  • If you get the error, stop the debugger, right click the solution and "clean solution". Hit F5 to restart debugger. This is really annoying as it has >50% fail rate for me and you would think that there should not be a manual option to CLEAN SOLUTION! This $1200 POS application should clean it for you automatically!
  • Here's another workaround that may be more appealing to some, courtesy of Gary Farr (http://blogs.claritycon.com/blogs/gary_farr/archive/2007/03/09/2888.aspx).
  • Add the following to your pre-build events:

    IF EXIST $(TargetPath).LOCKED (del $(TargetPath).LOCKED) ELSE (IF EXIST $(TargetPath) (move $(TargetPath) $(TargetPath).LOCKED))

  • A workaround that does the job for me is instead of using "Build" use "Build Solution"

  • After a successful build, I count to ten, then I refresh my webform.
  • I have found that by re-registering ASP.NET against IIS the problem "goes away" - I haven't had the problem since. You will need to run the following on the command line:
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i. This more than likely won't work for everyone - it's a complex problem.
  • restart VS.
  • When Cleaning the solution, a few warnings were issued about files that could not be deleted. These files had their read-only property set. After setting the property of these files to read/write, the problem was solved.
  • Restart IIS

EDIT: Items retrieved from an old version of the page (courtesy of archive.org).

like image 23
daxsorbito Avatar answered Oct 05 '22 06:10

daxsorbito