使用相同组件的不同版本

时间:2010-05-20 22:32:35

标签: c# assemblies reference gac activereports

我有一个项目,我同时必须使用ActiveReports 2和ActiveReports 6中内置的报告。总的来说,它工作正常,但是一些帮助程序集使用相同的名称。例如,为了能够导出为PDF,两个版本都使用名为ActiveReports.PdfExport.dll的程序集。当然,相应的装配是不同的。

请注意,我不直接访问ActiveReports.PdfExport.dll - 这是由ActiveReports运行时处理的。

我无法找到将它们都包含在项目中的方法。有办法吗? GAC是答案吗?

3 个答案:

答案 0 :(得分:6)

如果您有类型名称冲突,则为每个程序集创建单独的external aliases将有所帮助。对于程序集名称冲突,请查看ILMerge;您可以将所有相关组件组合在一起。您将为ActiveReports 2创建一个程序集,它将所有必需的程序集和另一个程序集组合在一起,用于ActiveReports 6.

答案 1 :(得分:1)

GAC是一种方式,但Fusion解决方案具有很大的灵活性,可能就足够了。 Fusion将在BaseDirectory中探测程序集名称。[DLL | EXE]。如果没有找到它将探测BaseDirectory \ Name。[DLL | EXE] \ Name。[DLL | EXE]。因此,您可以在Bin文件夹中创建名为ActiveReports.PdfExport.DLL的文件夹,并在其中转储旧版本的文件。

答案 2 :(得分:0)

是的,您必须将两者都放入GAC(这是它为客户端程序集制作的内容)。

我的想法:创建两个库助手,分别引用适当的程序集,将它们注册到某种工厂或经理中,并在需要时调用特定的库。

相关问题