1

问题

看起来 MS 已在其 Report Viewer 2010 公司中删除了对嵌套业务对象的支持。我们想升级我们的网络应用程序以利用新功能,但需要保持向后兼容以适应大量遗留报告。

注意事项

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

到目前为止的接近

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

可能的其他想法

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

4

1 回答 1

1

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

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

于 2010-03-02T21:45:17.360 回答