6

我有一个 WinForms 2.0 应用程序,其中包含使用 Microsoft ReportViewer 创建的大约 18 个报告。每次启动报告时都会创建一个动态程序集 (expression_host_xxxxxx.dll)。这个动态程序集被加载到内存中,并在应用程序运行时消耗资源的其余部分停留在那里。即使我们只有 1 个报告并且我们启动了 3 次,我们也会在内存中获得 3 个这样的 expression_host 程序集。

有没有办法阻止创建这些程序集或在我们完成后卸载这些程序集?

TIA

4

1 回答 1

4

我已经找到了解决方案。在 reportviewer 控件上,您可以表示在所谓的沙盒应用程序域中执行报告:

`rpv1.LocalReport.ExecuteReportInSandboxAppDomain();`

这不会阻止创建 Expression_Host 程序集,因为这些程序集是评估您在报告中使用的表达式所必需的。但是,它将在新的应用程序域中启动报告。然后在报告完成后卸载新的应用程序域,因此,该域中的任何已加载程序集也将被卸载。

于 2009-07-20T16:22:55.987 回答