3

在开发 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 的后台编译器。

4

1 回答 1

2

在我编译解决方案并使用脚本将所有项目的 dll 复制到 /bin 后发生错误。Visual Studio 不允许我重新编译,但如果我重新启动它,一切正常。

我建议将每个项目的输出目录设置为 DotNetNuke 网站的 bin 目录。这将帮助您避免完全复制文件的手动步骤。

设置项目的输出目录: 在解决方案资源管理器中右键单击项目并选择属性。选择构建选项卡,选择所有配置(在顶部)并将输出路径设置为“ ..\..\bin”(靠近底部)。这假设您的项目文件位于模块主目录中的典型位置(例如 DesktopModules/YourModule/YourProject.csproj),否则您可以使用相邻的浏览按钮导航到网站的 bin 目录。

于 2009-02-08T00:20:44.823 回答