2012-06-07 22 views
4

我在弄清楚使用Unity應用程序塊時的意外行爲。我有項目A作爲我的啓動項目。爲什麼Unity需要程序集引用

項目A具有項目引用項目B,其具有的項目引用項目C.

項目A使用統一解決參考項目B定義的類,這些類反過來使用統一解決參照對項目C中類的依賴關係。

因此,由於我只使用在公共項目中定義的接口並使用Unity解析具體的引用,因此不需要在項目中爲項目B或項目C添加項目/程序集引用A

但是在這種情況下,Unity無法解析引用。另一方面,如果我爲這兩個項目添加引用,則沒有問題。爲什麼有必要?有沒有辦法解決?

這是因爲Unity需要dll在上下文中並加載以便從這些程序集構造類型?不知何故,這感覺不對。 任何人都可以幫助我理解這個行爲。

+0

這有幫助嗎?抱歉,單片表示。 – koder

回答

1

Unity程序集中的代碼需要能夠解析您註冊的具體類。這意味着它需要訪問具體類所在的程序集 - 與Unity程序集在同一個輸出目錄中,或者在GAC中 - unity需要能夠找到它們。

3

如果您在代碼中註冊依賴項,您需要引用定義這些依賴項(無論是接口還是具體類)的程序集。如果使用XML定義映射,則不需要引用,但必須確保Unity可以在運行時找到程序集。因此,您需要將它們放入GAC或應用程序文件夾中。

+0

是的,爲了增加這一點,如果你做一個乾淨的項目A的構建,沒有項目引用,項目B和項目C甚至沒有建立。如果您要構建解決方案,則生成項目B和C,但其二進制文件不會放入項目A的應用程序文件夾中。 – Shiv

相關問題