我有一个 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/