Pregunta

He actualmente un conjunto de informes con una serie de funciones comunes sentado en bloques de código dentro de la .archivos rdl.Esto, obviamente, presenta una capacidad de mantenimiento problema y me preguntaba si alguien sabía de una manera para que los distintos informes para compartir una biblioteca de código común?

Idealmente me gustaría tener una .Neto de la Asamblea conectado a mi proyecto de Reporting Services, que todos mis informes pueden acceder y las funciones de llamada de.Esto le puede ahorrar el dolor de cabeza de tratar de actualizar y volver a implementar alrededor de 100 informes cada vez que un cambio es necesario realizar una función común.

Alguna sugerencia?

¿Fue útil?

Solución

Desde dentro de Visual Studio en las propiedades del informe, en el 'Referencias' complemento de la ficha de los detalles para el ensamblado que contiene el código administrado.Este código puede ser llamado a partir de expresiones dentro de los informes utilizando el nombre de la instancia que se especifica.

Esta asamblea pueden ser almacenados en la GAC o la PrivateAssemblies directorio de Visual Studio, y se implementa en el Informe del Servicio de directorio 'bin' en el servidor de Reporting Services.Para obtener más información, consulte Cómo utilizar ensamblados o código embebido en Reporting Services

Otros consejos

Yo tenía un montón de dolor con este, así que espero que esto ayude a alguien.Usted puede obtener de el artículo de MSDN, pero hay un par de puntos por debajo de la que creo que puede ayudar a acelerar a alguien a través de esto un poco más rápido.

No te olvides de añadir esto a su rssrvpolicy.archivo de configuración:

<CodeGroup class="UnionCodeGroup"
   version="1"
   PermissionSetName="FullTrust"
   Name="MyCodeGroup"
   Description="Code group for my data processing extension">
      <IMembershipCondition class="UrlMembershipCondition"
         version="1"
         Url="C:\pathtocustomassembly\customassembly.dll"
       />
</CodeGroup>

Me olvidé de ello y yo estaba odiando por un rato.

Además no olvides para golpear ambas de las siguientes carpetas para 2005 con su nueva dll:

Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies 
Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin

Además de no utilizar log4net con su asamblea.No pude hacer que funcione.Tal vez alguien puede, pero no a mí.

Además, si te equivocas como lo hice yo que usted no será capaz de eliminar los archivos hasta que cierre Visual Studio.

Además de hacer sus métodos compartidos o estática.Es más fácil.

Crear una implementación archivo de proceso por lotes.Algo así como:

@ECHO OFF
REM   Name: SRSDeploy_Local.bat
REM
REM   This batch files copies my custom assembly to my Reporting Services folders.
REM
REM   This is the SQL Server 2005 version:
copy "C:\Projects\Common\lib\SCI.Common.SSRSUtils.dll" "C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies"
copy "C:\Projects\Common\lib\SCI.Common.SSRSUtils.dll" "C:\Program Files\Microsoft SQL Server\MSSQL.2\Reporting Services\ReportServer\bin"  

Finalmente, construir su informe antes de la vista previa.

Si se construye usted está probablemente en su camino.

Excepto...

Usted no puede instalarla en su servidor de informes de producción, ya que siempre obtendrá el siguiente error:

Error al cargar el módulo de código

Que es lo que estoy trabajando ahora mismo.

El artículo siguiente enumera acerca de todas las diferentes formas de llamar .Net de código a partir de un informe de SSRS. Ampliación de Microsoft SQL Server 2000 Reporting Services con Código Personalizado

Si todos estos informes se ejecutan en el mismo servidor, otra opción a considerar sería la de utilizar .Net procedimientos almacenados en la base de datos para mantener su código.

Muchas gracias chicos, ahora puedo llamar a mi asamblea de mis informes.

Pregunta complementaria: Hay un espacio de nombres me los puede incluir cuando estoy creando mi asamblea que hace que sea consciente de los objetos en el diseñador de informes, tales como los campos y parámetros?Sería genial si me podría pasar, por ejemplo, una colección de campos en un establecimiento inflexible de camino a mi asamblea.

Y la respuesta: Un par de horas de búsqueda revela que la adición de \Archivos de Programa\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\Microsoft.ReportingServices.ProcessingObjectModel.dll como una referencia en mi asamblea me permite acceder a los Informes diversos tipos de Servicios, tales como los Campos y Parámetros.Tenga en cuenta que en Reporting Services 2008, el cambios de espacio de nombres.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top