Microsoft Report Viewer Redistributable 2010

When you run ReportViewer.exe, the following files are installed in the Global Assembly Cache folder on the deployment computer.

  • Microsoft.ReportViewer.Common.dll

  • Microsoft.ReportViewer.ProcessingObjectModel.dll

  • Microsoft.ReportViewer.WebForms.dll

  • Microsoft.ReportViewer.WinForms.dll

  • Microsoft.ReportViewer.DataVisualization.dll

-------------

We develop software on MS Visual Studio 8 and we are facing serious problems with MS Report Viewer's memory leaks (WinForms Application).

-------------

Posted by Microsoft on 2/2/2010 at 3:43 PM

Thank you for your feedback.
The issue that you have reported has been fixed in Visual Studio 2010.

-------------

Posted by Sautin on 2/10/2010 at 10:27 AM

No the issue has not been fixed in VS2010, I just downloaded it and redeveloped my class library that generates PDF reports using Microsoft ReportViewer Control version 10. Every time that I call LocalReport.RefreshReport() Method, my memory jumps significantly(expected for generation of the report) but even after disposing of the reportviewer and cleaning it out, my memory footprint never returns to what it was. This is becoming really disappointing and may cause us to use someone elses technology to render reports for our clients.

-------------

Posted by Cyberlogic on 2/17/2010 at 8:13 AM

Hi there, we just tried the Report Viewer files from VS2010 RC1 Ultimate edition (By referencing Microsoft.ReportViewer.WinForms.dll & Microsoft.ReportViewer.Common.dll in our projects) in VS2008 and the Report Viewer seems to work FINE now!
We noticed that there is no delays from memory leaks and that the application works normally.
We got some help from another post in MS Connect: https://connect.microsoft.com/VisualStudio/feedback/details/510243/report-viewer-has-memory-leak-in-local-report-mode

-------------

If Session.Count > 0 Then
    For i As Integer = 0 To Session.Count - 1
        If i < Session.Count AndAlso Not Session(i) Is Nothing AndAlso Session(i).GetType().ToString() = "Microsoft.Reporting.WebForms.ReportHierarchy" Then
            Session.RemoveAt(i)
        End If
    Next
End If

-------------

 

Visual Studio 2010

The ReportViewer in VS 2010 is a multi-targeted assembly.  That means that is can be loaded into a .Net 3.5 or a .Net 4.0 application.  When running under .Net 3.5, all of the same rules and methods noted above are applicable.  However, the CLR security team made changes to code access security in .Net 4.0, so there are corresponding changes in the ReportViewer as well:

  • Executing in the current AppDomain is no longer supported, so using a sandbox is the default mode when running in .Net 4.0.  Two new methods have been added to better control the permissions of the sandbox AppDomain so that you don’t see any loss of functionality:  AddFullTrustModuleInSandboxAppDomain and SetBasePermissionsForSandboxAppdomain.
  • ExecuteReportInCurrentAppDomain, AddTrustedCodeModuleInCurrentAppDomain, and ExecuteReportInSandboxAppDomain have been marked as obsolete.  While it is perfectly acceptable to use them in a .Net 3.5 application, they won’t have any effect when you compile for .Net 4.0.  Going forward, we recommend using the sandbox AppDomain even under .Net 3.5 because setting the correct security policy on the current AppDomain is an error prone task.  The new methods will work under both frameworks and is the best approach if you want to write in a framework agnostic way.

If you do nothing, the default behavior under .Net 4.0 will result in the same permissions for the expression host as the default behavior in VS 2008.  You will be running in a sandbox AppDomain (versus the default of the current AppDomain in VS 2008), but the permissions for the expression host will be the same.

As part of the security changes to the CLR in .Net 4.0, an application configuration flag, NetFx40_LegacySecurityPolicy, can be specified to use the .Net 3.5 security model in .Net 4.0.  If this flag is specified, the report viewer will behave just as it would under .Net 3.5, meaning that the obsolete methods will function correctly.

Regardless of which framework version you use with the VS 2010 report viewer, the issue surrounding the sandbox AppDomain leak has been fixed.  The sandbox AppDomain is shared resource across multiple instances of the viewer.  A new AppDomain is created periodically (if there is a need) and used by all local mode requests in the process.  Once all reports referencing the old AppDomain have completed, the old domain will unload.

-------------

报表难点

1 RDLC 数据量大的时候,大量占用内存,超过800M。

2 RDLC 占用的内存没有释放

报表在ReportViewer中呈现的时候占用大量的内存?精简报表的设计?
只生成PDF或Excel,不在ReportViewer中呈现?

使用 ReportViewer 2010?

consider asking for a nice new machine with >= 8 Gigabytes of RAM and a 64-bit operating system.

使用报表服务器?--- 占用内存是否还是很大?
使用水晶报表? --- 不可行(价格昂贵,重新设计,VS2010中无水晶报表)
使用Access2007/2010的报表功能? ---- 不可行

-------------

http://blogs.msdn.com/brianhartman/archive/2010/02/18/expression-evaluation-in-local-mode.aspx

http://connect.microsoft.com/VisualStudio/feedback/details/527451/ms-report-viewer-memory-leak-any-update-fix-winforms-application

Deploying Reports and ReportViewer Controls

http://msdn.microsoft.com/en-us/library/ms251723.aspx

http://blogs.msdn.com/selvar/archive/2008/07/18/getting-system-outofmemoryexception-when-using-reportviewer-contol-in-local-mode.aspx

http://stackoverflow.com/questions/2486118/report-viewer-out-of-memory-exception

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值