2

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

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

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

4

3 回答 3

6

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

于 2010-05-21T02:29:28.863 回答
1

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

于 2010-05-21T01:56:01.293 回答
0

是的,您必须将两者都放入 GAC(如果是客户端程序集,这就是它的用途)。

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

于 2010-05-20T22:36:17.507 回答