2010-05-20 63 views
2

我有一個項目,我同時必須使用ActiveReports 2和ActiveReports 6中內置的報告。總的來說,它工作正常,但一些輔助程序集使用相同的名稱。例如,爲了能夠導出爲PDF,兩個版本都使用名爲ActiveReports.PdfExport.dll的程序集。當然,相應的組件是不同的。使用相同程序集的不同版本

請注意,我不直接訪問ActiveReports.PdfExport.dll - 這是由ActiveReports運行時處理的。

我找不到一種方法將它們都包含到項目中。有沒有辦法? GAC是答案嗎?

回答

6

如果您有類型名稱衝突,則爲每個組件創建單獨的external aliases將有所幫助。對於程序集名稱衝突,請看ILMerge;你可以將所有相關的程序集合在一起您將創建一個ActiveReports 2的程序集,該程序集將其所有必需的程序集和ActiveReports 6的程序集組合在一起。

0

是的,您必須將兩者都放入GAC(這是它的用途,以防客戶端組件)。

我的想法:創建兩個庫helper,引用每個適當的程序集,將它們註冊到某種工廠或管理器中,並在需要時調用特定的一個。

1

GAC是一種方式,但Fusion解決方案具有很大的靈活性,可能就足夠了。 Fusion將在BaseDirectory中探測程序集名稱。[DLL | EXE]。如果沒有找到它,它將探測BaseDirectory \ Name。[DLL | EXE] \ Name。[DLL | EXE]。因此,您可能可以在Bin文件夾中創建一個名爲ActiveReports.PdfExport.DLL的文件夾,並在其中轉儲舊版本的文件。

相關問題