无法加载引用库

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显示此错误时,我找不到任何文件锁定。
[更新] 这里有一个旧的MSDN文档告诉你,如果你在那里引用任何超过64KB的DLL,则不要将所有DLL构建到单个文件夹中。 特别地,该文档说:
“当引用程序集大小超过64 KB时,它会导致构建过程失败,出现文件锁定错误。”
我们在 /bin 文件夹中有对超过 64KB DLL 的引用,并将重新编译的 DLL 复制到那里似乎会触发这种情况,至少会影响 VB IDE 的后台编译器。

你找到解决方案了吗?我也遇到了同样的问题。当我将编译后的程序集从一个解决方案复制到另一个解决方案的引用文件夹中并尝试编译时,就会出现这个问题。我使用的是vs2008。 - Jaroslav Urban
1个回答

2
当我编译解决方案并使用脚本将所有项目的dll复制到/bin目录后,就会出现错误。Visual Studio不允许我重新编译,但如果我重启它,一切都正常。
我建议将每个项目的输出目录设置为DotNetNuke网站的bin目录。这将帮助您避免手动复制文件的步骤。
要设置项目的输出目录:右键单击解决方案资源管理器中的项目,选择属性。选择生成选项卡,在顶部选择所有配置,并将输出路径设置为“..\..\bin”(接近底部)。这假定您的项目文件在模块主目录内的典型位置(例如DesktopModules/YourModule/YourProject.csproj),否则您可以使用相邻的浏览按钮导航到您的网站的bin目录。

你知道这些链接是否仍然有效吗? http://weblogs.asp.net/bsimser/archive/2005/05/25/408850.aspx http://msdn.microsoft.com/en-us/library/ms998223.aspx 我认为它解释了问题。 - mika
以这种方式设置DNN模块不仅很常见,而且是一种“最佳实践”。在过去三年中,我没有遇到您所说的问题。 - Ian Robinson
我认为那些文章只适用于VS .NET 2003,而且我和@irobinson从未在VS2005或VS2008中看到过那些症状。 - bdukes
每当使用脚本构建一个开放项目时,我在VS2010中遇到了这个问题。必须重新启动VS才能再次编译。 - TomZ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接