显示嵌入在DLL文件中的.RDLC报告

时间:2008-10-31 14:36:53

标签: reporting-services rdlc embedded-resource

我有一个由Windows服务和表单应用程序使用的报告。所以,我想把报告嵌入一个可供两者使用的DLL文件中。

问题是,如果我尝试在我的Windows窗体应用程序中设置ReportViewer控件的ReportEmbeddedResource属性,它将在windows窗体应用程序中搜索资源,而不是dll文件。

例如:来自Windows窗体应用程序的代码:

rv.LocalReport.ReportEmbeddedResource = "MyReportInMyDLLFile.rdlc"

如何让上面的命令在我的DLL文件中查找嵌入式资源?

3 个答案:

答案 0 :(得分:54)

这样的事情应该这样做:

Assembly assembly = Assembly.LoadFrom("Reports.dll");
Stream stream = assembly.GetManifestResourceStream("Reports.MyReport.rdlc");
reportViewer.LocalReport.LoadReportDefinition(stream);

答案 1 :(得分:23)

答案 2 :(得分:11)

最好的办法可能是从其他程序集获取RDLC资源的流,然后将其传递给Report Viewer控件的“LoadReportDefinition”方法。

有关如何从不同程序集中的嵌入资源获取流的详细信息,请访问:Retrieving Resources with the ResourceManager Class

此外,您需要使用它的完整命名空间路径来引用嵌入式资源。

E.g。如果您的应用程序的默认名称空间为 TheApp ,并且您在名为“报告的文件夹中保留了名为” MyReport.rdlc “的报告“,报告参考电话将是: -

rv.LocalReport.ReportEmbeddedResource = "TheApp.Reports.MyReport.rdlc";