【问题标题】:Vs2010 Circular dependency issueVs2010循环依赖问题
【发布时间】:2011-10-12 10:33:29
【问题描述】:

Visual Studio 2010 出现了一些与循环依赖有关的奇怪行为,就我而言……它在撒谎;我想知道你是否可以帮助我回避它或指出我的无知。

基本上,我有一个名为 REM 的程序集,它只引用标准 .NET DLL,还有一个名为 COR 的程序集,它引用 .NET 程序集和解决方案中的一些其他项目(其中没有一个引用 REM)。

我想要 COR 引用 REM,但 Visual Studio 抱怨循环依赖,我就是不知道为什么。

任何帮助将不胜感激。

谢谢, 克林特。

【问题讨论】:

  • 你确定没有任何东西(没有其他项目)引用 REM 吗? COR 和/或 REM 之前是否相互引用过?某些以前版本的 COR 或 REM 是否引用了您在 VS 中看到的内容以外的内容?
  • 事实证明,即使 REM 没有明确引用 COR;针对解决方案的项目依赖关系对话框显示 REM 依赖于 COR(天知道为什么)。 “删除”该依赖项导致成功添加了引用。 :)
  • 换句话说,它说的是实话。这将向您表明,一个工作了 10 年的程序不会有这么大的错误。
  • 不要假设visual studio是绝对可靠的,它仍然有一些相当大的错误和疏忽;从它认为存在依赖关系的角度来看,它说的是实话,但是没有提及创建依赖关系的项目 - 这完全取决于 Visual Studio 管理一个单独的“依赖关系”列表。
  • 我今天遇到了同样的事情,@Clint 关于项目依赖项对话框的评论为我指明了正确的方向。项目参考资料都搞砸了;有些是对同一解决方案中项目的二进制引用,而另一些是项目引用。

标签: c# .net visual-studio-2010 circular-dependency


【解决方案1】:

确保清理并重建两个项目(您也可以尝试关闭并重新打开项目或解决方案,甚至重新启动 VS 以使其正确重新加载项目)。

如果您无法从 VS 中弄清楚,您可以尝试使用反编译器来查看实际 DLL 真正引用的内容。 (例如,参见 Telerik 的 Just Decompile,可从本页底部获得:http://www.telerik.com/download.aspx)打开 DLL 文件,您应该能够看到它们各自引用的内容。

【讨论】:

    【解决方案2】:

    事实证明,即使 REM 没有明确引用 COR; 针对解决方案的项目依赖项对话框有 REM 取决于 COR(天知道为什么)。 “删除”这种依赖 导致引用被成功添加。

    我今天遇到了同样的情况 - 我有一个以前引用 B 的项目 A,但后来从项目中删除了该引用 - 只是仍然停留在解决方案依赖项列表中,生成了一个虚假的依赖项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-25
      • 2021-05-08
      • 1970-01-01
      相关资源
      最近更新 更多