【问题标题】:Why must I chain reference assemblies?为什么必须链接引用程序集?
【发布时间】:2009-04-10 17:51:46
【问题描述】:

我的项目引用了一个程序集(称为 X),该程序集又引用了另一个程序集(称为 Y)。

当我尝试编译我的项目时,它要求它应该引用程序集 Y。这是为什么呢?我在引用程序集 X 的行上收到以下错误:

“DevExpress.XtraEditors.XtraForm”类型在程序集中定义 没有被引用。您必须添加对程序集的引用 'DevExpress.Utils.v9.1,版本=9.1.2.0,文化=中性, PublicKeyToken=b88d1754d700e49a'。

DevExpress.XtraEditors.XtraForm 是程序集 Y。

这是为什么?我以前从未见过这种行为。

【问题讨论】:

    标签: c# visual-studio-2008 .net-assembly


    【解决方案1】:

    这一直存在。如果您使用从程序集 Y 获取方法/属性/成员等的对象,您只会在编译时获得这些。

    这是因为 .NET 不能依赖程序集 X 来确保它能够获得正确的符号和元数据信息。

    【讨论】:

    • 我不认为一直都是这样。我将项目从 .net1.1 移植到 .net3.5 并出现了这个问题。如果你说的是真的,那么在项目 A 引用程序集 B 中引用程序集 C 引用程序集 D,我的项目 A 将不得不引用程序集 B、C 和 D。没有意义
    【解决方案2】:

    如果它没有对所有依赖项的引用,编译器将如何构建您的项目?

    您的项目引用的程序集是您的应用程序工作所必需的。您正在使用这些程序集中的类型,如果没有这些类型,您的应用程序将无法构建。更重要的是,如果没有这些类型,您的应用程序将无法运行。

    现在考虑您引用的每个程序集都以与您的程序集相同的方式构建,并且要求所有 its 引用的程序集都存在并说明。这确实会产生可能令人讨厌的连锁反应,但最终结果是,一旦您执行应用程序,CLR 就会拥有运行应用程序所需的所有程序集。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-28
      • 2010-11-05
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多