【问题标题】:The type is defined in an assembly that is not referenced该类型在未引用的程序集中定义
【发布时间】:2012-09-26 18:29:42
【问题描述】:

我刚刚开始将合作伙伴办公室解决方案中的几个项目整合到我们的解决方案中。该程序是一个 C# winform 应用程序。

程序已编译,一切正常,但昨天我又去构建,它突然抛出错误“类型'Namespace.MainFrameDisplay'是在未引用的程序集中定义的。你必须添加对程序集 'OtherAssembly, Version=1.7.0.0, Culture=neutral, PublicKeyToken=52af1880d3cd7291" 的引用(据我所知,OtherAssembly 在原始项目中没有用作引用。有Assembly 和 OtherAssembly 之间的兼容性问题,添加 OtherAssembly 会导致大约 100 个错误。)

以及一个相关的错误“无法将类型'Namespace.MainFrameDisplay'隐式转换为'Namespace.MainFrameDisplay' [c:\Dev\program\bin\debug\Assembly.dll]

错误的伪代码的 sn-p 是:

private MainFrameDisplay _MainFrame;  //definition
_MainFrame = this.Mainframe;  // error is thrown here
_MainFrame.Parent.Controls.Add(_NotifyBar);

如果我删除定义,错误仍然存​​在。
如果我取出抛出错误的行,它编译得很好。即使调用 _MainFrame.Parent。

我已经删除/删除了这个麻烦的项目并解压缩/添加了原始的新副本,但问题仍然存在。有什么想法和建议吗?

【问题讨论】:

    标签: c# winforms .net-assembly


    【解决方案1】:

    嗯............当然,我在发布后就知道了。

    ( -_- )

    所以让我们称之为后代的提示。

    在上面的代码中,“this”引用了一个基类,这是我要引入我们的解决方案的其他项目之一。我将原始基类项目的引用与我的版本进行了比较,果然我不小心包含了对“OtherAssembly”而不是“Assembly”的引用。 (他们的真名非常相似。)

    不正确的引用并没有导致基类出现任何问题,而是导致派生类发生冲突。切换,修复,编译成功。

    【讨论】:

      猜你喜欢
      • 2011-08-16
      • 2014-08-15
      • 2016-05-01
      • 2018-01-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2018-12-26
      • 1970-01-01
      相关资源
      最近更新 更多