【问题标题】:Why Unity needs assembly references为什么 Unity 需要程序集引用
【发布时间】:2012-06-07 23:13:51
【问题描述】:

我发现使用 Unity 应用程序块时出现意外行为。我有项目 A 作为我的启动项目。

项目 A 具有对项目 B 的项目引用,而项目 B 具有对项目 C 的项目引用。

项目 A 使用 unity 来解析对项目 B 中定义的类的引用。这些类又使用 Unity 来解析对项目 C 中类的依赖关系的引用。

所以,由于我只使用在通用项目中定义的接口并使用 Unity 解析具体引用,因此无需在项目 A 中添加项目 B 或项目 C 的项目/程序集引用

但在这种情况下,Unity 无法解析引用。另一方面,如果我为这两个项目添加了引用,则没有问题。为什么有必要?有没有办法解决?

这是因为 Unity 需要在上下文中加载 dll 才能从这些程序集构造类型? 不知何故,这感觉不对。 任何人都可以帮助我理解这种行为。

【问题讨论】:

  • 这有帮助吗?对不起,单体表示。

标签: unity-container


【解决方案1】:

如果您在代码中注册依赖项,则需要引用定义这些依赖项(无论是接口还是具体类)的程序集。如果您在 XML 中定义映射,则不需要引用,但您必须确保 Unity 可以在运行时定位程序集。因此,您需要将它们放在 GAC 或应用程序文件夹中。

【讨论】:

  • 是的,如果您对项目 A 进行清理和构建,没有项目引用,则项目 B 和项目 C 甚至都不会构建。如果您要构建解决方案,则构建项目 B 和 C,但它们的二进制文件不会放入项目 A 的应用程序文件夹中。
【解决方案2】:

Unity 程序集中的代码需要能够解析您注册的具体类。这意味着它需要能够访问具体类所在的程序集——无论它们是在与 Unity 程序集相同的输出目录中,还是在 GAC 中——unity 需要能够找到它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 2015-05-30
    相关资源
    最近更新 更多