在开发 ASP.NET Web 应用程序项目时,我在 Visual Studio 2008 中收到此错误。
无法加载引用的库“Path-to-DotNetNuke\bin\file.dll”:该进程无法访问该文件,因为它正被另一个进程使用。
这是一个包含多个模块的 DotNetNuke 项目。IIS 从应用程序根目录下的 /bin 文件夹加载所有程序集。
解决方案中的项目位于各自的 /DesktopModules/ProjectName 文件夹中,并编译到项目下的 bin 文件夹中。
在我编译解决方案并使用脚本将所有项目的 dll 复制到 /bin后发生错误。Visual Studio 不允许我重新编译,但如果我重新启动它,一切正常。在重新编译和测试整个解决方案时,这真的很烦人。您必须在每次重新编译之间重新启动 Visual Studio。
当 Visual Studio 显示此错误时,我无法使用 Process Explorer 找到任何文件锁定。
[更新] 有一个旧的 MSDN 文档告诉您,如果您在那里引用任何超过 64KB 的 DLL,则不要将所有 DLL 构建到单个文件夹中。特别是,该文件说:
当引用的程序集大小超过 64 KB 时,它会导致构建过程失败并出现文件锁定错误。
我们确实在 /bin 文件夹中引用了超过 64KB 的 DLL,并且在那里复制重新编译的 DLL 似乎会触发这种情况,至少使用 VB IDE 的后台编译器。