在VB中同时使用两个版本的Microsoft.Reporting DLL

时间:2010-03-02 13:02:20

标签: vb.net reportviewer activator

问题

看起来MS已在其Report Viewer 2010公用程序中删除了对嵌套Business Objects的支持。我们希望升级我们的网络应用程序以使用新功能,但需要保持对大量旧版报告的反向比较。

注意事项

1:由于我们在托管的共享Web服务器上,因此我们无法在GAC中添加任何内容 2:我们在VB中似乎不能使用别名(我认为是一个c#特性),所以我们不能在VS中添加引用或者我们得到名称空间冲突或引用已存在错误。
3:报告Web组件dll本身依赖于另外两个也是新的dll(例如common.dll和processing.dll)
4:报告组件必须在主应用程序域中运行(使用ExecuteReportInCurrentAppDomain),因为它访问业务对象时,它们检查安全角色等,如果报表查看器在不同的应用程序域中运行,这似乎不起作用。这可能会解决。

到目前为止的方法

使用activator.createinstance或类似的反射方法,并将新dll放在bin目录的子文件夹中。我听说这仍然不会起作用,因为网络公司无法找到它所依赖的其他dll(常见和处理)。

可能的其他想法

创建一个管理选择的新C#项目。

1 个答案:

答案 0 :(得分:1)

如果有人有兴趣。
1)我创建了一个C#项目
2)我重命名了我需要的一个dll并引用了它们 3)我将VS中引用的Alias属性分别更改为reportViewer2005或reportViewer2008 4)我创建了一个IReportViewer接口,我的遗留应用程序在想要生成报告时使用该接口进行交互 5)我在C#项目中的两个新类文件中使用了extern alias ReportViewer2010Alias;extern alias ReportViewer2008Alias;,一个用于2010,一个用于2008,并实现了接口IReportViewer
6)然后在

中连接不同的方法和事件

然后我从我的VB应用程序中引用了c#项目。我现在可以使用这两个类,它们似乎在我们的开发系统上可靠地工作。手指交叉进行生产服务器测试。