c# - Expression_Host 程序集的数量不断增长

标签 c# winforms reportviewer

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

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

TIA

最佳答案

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

`rpv1.LocalReport.ExecuteReportInSandboxAppDomain();`

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

关于c# - Expression_Host 程序集的数量不断增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1152675/

相关文章:

c# - 尚未指定报告 'Report1' 的报告定义

c# - WebClient.DownloadDataAsync 正在卡住我的 UI

c# - 在VB.net/C#中直接使用资源字体

c# - 如何将枚举从类传递到表单?

c# - 打字时显示类似智能感知的窗口(无法获得正确的坐标)

java - 通过 eclipse 创建的 BIRT 报告在执行时抛出错误

c# - C# 中的最佳 "not is"语法

c# - 在 C# 中使用委托(delegate)作为 C DllImported 函数的回调

c# - 禁用控件(例如按钮)上的上下文菜单

c# - 报表查看器未显示在表单设计器上(c# winform)