【问题标题】:Unable to load referenced library无法加载引用的库
【发布时间】:2009-02-07 21:13:19
【问题描述】:

在开发 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 找到任何文件锁定。


[更新] 有一个old MSDN document 告诉您,如果您在那里引用任何超过 64KB 的 DLL,则不要将所有 DLL 构建到单个文件夹中。特别是,该文件说:

它会导致构建过程失败 出现文件锁定错误时 引用的程序集超过 64 KB 大小。

我们确实在 /bin 文件夹中引用了超过 64KB 的 DLL,并且在那里复制重新编译的 DLL 似乎会触发这种情况,至少使用 VB IDE 的后台编译器。

【问题讨论】:

  • 你找到解决办法了吗?我有同样的问题。一旦我将编译的程序集从一个解决方案复制到另一个解决方案的参考文件夹并尝试编译它,就会发生这种情况。使用 vs2008。

标签: visual-studio dotnetnuke


【解决方案1】:

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

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

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

【讨论】:

  • 你知道这是否仍然是最新的吗? weblogs.asp.net/bsimser/archive/2005/05/25/408850.aspxmsdn.microsoft.com/en-us/library/ms998223.aspx我认为它解释了问题。
  • 以这种方式设置 DNN 模块不仅很常见,而且在某种程度上是一种“最佳实践”。在过去三年开发 DNN 模块的过程中,我没有遇到过您所说的问题。
  • 我相信这些文章仅适用于 VS .NET 2003,而我和@irobinson 从未在 VS2005 或 VS2008 中看到这些症状。
  • 每当使用脚本构建开放项目时,我都会在 VS2010 中体验到这一点。 VS 必须重新启动才能再次编译。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-29
  • 2016-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-08
  • 1970-01-01
相关资源
最近更新 更多