visual studio ssrs services microsoft instalar reporting-services rdlc embedded-resource

reporting services - studio - Mostrar el informe.RDLC incrustado en un archivo DLL



report viewer web forms (3)

Tengo un informe que es utilizado por un servicio de Windows y una aplicación de formulario. Por lo tanto, quiero incluir el informe en un archivo DLL que pueda ser utilizado por ambos.

El problema es que si trato de configurar la propiedad ReportEmbeddedResource de un control ReportViewer en mi aplicación de formulario de Windows, buscará la aplicación de formularios de Windows para el recurso, no el archivo dll.

Ejemplo: código de la aplicación de formulario de Windows:

rv.LocalReport.ReportEmbeddedResource = "MyReportInMyDLLFile.rdlc"

¿Cómo puedo hacer que el comando anterior busque el recurso incrustado en mi archivo DLL?


Algo como esto debería hacerlo:

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


Probablemente, lo mejor que se puede hacer es obtener un flujo del recurso RDLC del otro ensamblado, luego pasarlo al método "LoadReportDefinition" del control Visor de informes.

Los detalles de cómo obtener un flujo de un recurso incrustado en un ensamblaje diferente se pueden encontrar aquí: Recuperación de recursos con la clase ResourceManager

Además, deberá consultar el recurso incrustado utilizando su ruta de espacio de nombres completa.

Por ejemplo, si tiene una aplicación con un espacio de nombre predeterminado de TheApp y mantiene un informe llamado " MyReport.rdlc " en una carpeta llamada " Informes ", la llamada de referencia del informe sería: -

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


Simplemente use el espacio de nombres completo del ensamblado, luego los nombres de las carpetas y luego el nombre del archivo:

rv.LocalReport.ReportEmbeddedResource = "My.Assembly.Namespace.Folder1.Folder2.MyReport.rdlc";

Luego, asegúrese de que el archivo de informe esté configurado como un recurso incrustado utilizando el panel de propiedades.