导致此错误的原因似乎是在进行卷影复制(说明显而易见的......),即在一个文件夹中生成一个文件,然后读取它以将其复制到其他地方。我认为导致问题的原因是生成或不生成第一个文件,以及何时/如何复制它,无论您的操作是什么。第一个文件(将被影子复制)是否需要重新生成,因此需要重新影子复制?
这篇文章说:
默认情况下,在 ASP.NET 创建的每个 appdomain 上启用卷影复制。加载的程序集将被复制到卷影副本缓存目录,并将从那里使用。使原始文件不被锁定,可以被修改。
他们的解决方法是防止卷影复制。但我个人并不完全理解影子副本在 asp.net 上下文中的作用,也许有人可以澄清禁用它是否有任何不良副作用:
<configuration>
<system.web>
<hostingEnvironment shadowCopyBinAssemblies="false" />
</system.web>
</configuration>
这篇文章讨论了禁用索引和/或防病毒,这表明构建项目会生成新文件,而防病毒(或索引服务)会在卷影副本尝试复制完全相同的文件时访问并锁定它们。
我经常收到他的错误,但从未发现我所做的具体操作会导致错误。我进行了代码更改,按 F5(运行/播放按钮),在 Web 浏览器中出现错误,关闭 Web 浏览器,再次按 F5。现在可以了。我不清理,我不重建。但是,在第二次 F5/Run 中,我相信 VS 检测到没有代码更改,因此,可能没有重做卷影副本?或者这次卷影副本的时间略有不同并且它可以工作。