为什么Unity需要汇编引用

时间:2012-06-07 13:04:36

标签: unity-container

我正在弄清楚使用Unity应用程序块时的意外行为。我有一个项目A作为我的启动项目。

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

项目A使用unity来解析对Project B中定义的类的引用。这些类反过来使用Unity来解析对Project C中类的依赖性的引用。

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

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

这是因为Unity需要将dll放在上下文中并加载以便从这些程序集构造类型吗?不知怎的,这感觉不对。 任何人都可以帮助我理解这个行为。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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