【问题标题】:DLL being overwritten by older version in Visual Studio projectDLL 被 Visual Studio 项目中的旧版本覆盖
【发布时间】:2013-04-25 14:36:01
【问题描述】:

我正在使用 HtmlAgilityPack 在 Visual Studio 2012 中开发 Web 应用程序。我的项目引用了应用程序 bin 文件夹中的 dll 的 1.4.0.0 版本。以前它使用 1.3.0.0

该应用程序可以运行,但大约每天一次,bin 文件夹中的 dll 会被覆盖,将版本 1.4.0.0 替换为 1.3.0.0。第一次发生这种情况时,我已经检查了 GAC 并删除了我的 ASP.NET 临时文件夹。有谁知道这里发生了什么?

【问题讨论】:

  • 使用 attrib.exe 使其只读,因此无法删除。应该有什么了不起!当它再次发生时。给初级团队成员放一天假是消除可能性的流行方法。
  • 这似乎是一个相当不错的尝试途径。我会让你知道会发生什么。
  • 只读似乎没有影响。我相信从事该项目的人之一正在提交引用旧版本 DLL 的项目文件。再加上我经常运行其他使用 1.3 的应用程序这一事实,让我相信 IIS 正在从 asp 缓存中提取 1.3。
  • 您是否在一个解决方案中拥有多个项目?

标签: c# visual-studio dll visual-studio-2012


【解决方案1】:

您还需要从解决方案资源管理器的解决方案参考列表中删除 1.3.0.0 dll。

【讨论】:

  • 当我们更新到版本 1.4.0.0 时,1.3.0.0 参考被删除
【解决方案2】:

较旧的 .dll 显然是从您的解决方案中的某个位置引用的。我会在编辑器中打开项目文件并在那里查找对旧版本的任何引用。

如果没有找到,我的猜测是您所依赖的其他库或组件正在引用旧版本的 .dll(您是否使用任何第三方库?)。如果您没有这些源代码,那么也许您可以使用JustDecompile 或其他类似工具对它们进行反编译。然后,您至少可以检查您使用的 dll 中的引用,并确认或排除它作为问题的根源(没有双关语^^)。

哦,还有一件事 - 可能很明显,但是您是否设置了 Specific version = true 以供参考?

【讨论】:

  • Specific version = true 确实已设置并且程序失败,因为它无法加载该版本(因为它已被 1.3 覆盖)。当我们迁移到 1.4 时,我们的第 3 方库都更新到了使用 1.4 的版本。对我们的项目文件进行短语“HtmlAgilityPack”的全文搜索只会产生对版本 1.4.0.0 的正确引用。
  • 我们还向我们的 Web.config 添加了版本重定向。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多