2009-10-23 9 views
5

Estaba ayudando a un amigo que tiene más de 100 informes de "Crystal Reports 2008" como parte de un "proyecto de sitio web asp.net".Los informes de Crystal realmente ralentizan la compilación del sitio web asp.net, ¿hay alguna manera de excluirlos?

No sé cómo ni por qué, pero cuando se está construyendo este proyecto "asp.net website", dedica unos 15 minutos a "generar" el directorio de informes donde residen todos los Crystal Reports.

¿Pueden incluso compilarse/compilarse los archivos Crystal Reports .rpt? En realidad, parece que pueden ser un recurso incrustado. Como por ejemplo según este artículo http://msdn.microsoft.com/en-us/library/aa287962(VS.71).aspx, debería poder cambiar si un informe está incrustado o no en las propiedades, PERO en "asp.net website project" esas propiedades no están disponibles cuando un informe se resalta en sol exp.

Cuando se crea y publica el sitio web, todos los archivos de informe se siguen colocando en la carpeta de informes correspondiente.

Así que supongo que mi pregunta es ¿hay alguna manera de evitar que VS cree Crystal Reports en "proyecto de sitio web"? Es tan largo que es insoportable.

Respuesta

2

Gracias por todas las sugerencias. Resulta que fue configurado para ser incrustado como un recurso ... que con cerca de un centenar estaba matando la construcción. Establézcalo en falso y la compilación estará en menos de un minuto.

<businessObjects> 
    <crystalReports> 
     <rptBuildProvider> 
      <add embedRptInResource="false"/> 
     </rptBuildProvider> 
    </crystalReports> 
</businessObjects> 
1

Usamos informes de cristal en bastantes diferentes aplicaciones/páginas web. En ninguno de ellos realmente incluimos los archivos de informe en el proyecto de Visual Studio. Ponemos los archivos en algo así como un sub directorio/Reports, y luego los referenciamos por nombre de archivo. Todavía estamos usando una versión bastante antigua de Crystal, pero no creo que puedan sacar algo así.

Utilizamos código de algo como lo siguiente:

Dim myRpt As New ReportDocument 
Select Case strFormNum 
    Case "M5044b" 
     strReportPath = Server.MapPath("/Reports/M5044b.rpt") 
    <..Snip a lot of case statements...> 
    Case "M5238aWithAI" 
     strReportPath = Server.MapPath("/Reports/M5238a_WithAI.rpt") 
End Select 

myRpt.Load(strReportPath) 

myRpt.SetDatabaseLogon(strCRUser, strCRPassword, strCRServer, strCRDB) 

myRpt.SetParameterValue("@nIndex", intNewIndex) 

myRpt.DataDefinition.FormulaFields.Item("Version").Text = "'Report Printed: " & Now().ToString & "'" 

oStream = myRpt.ExportToStream(ExportFormatType.PortableDocFormat) 
0

Es necesario asegurarse de que la herramienta personalizado no se ejecuta en cada informe. De forma predeterminada, cuando agrega un informe de Crystal a un proyecto, asociará esta herramienta personalizada que genera una clase contenedora para el informe. Es mucho más rápido hacer referencia al informe por nombre de archivo (como muestra Josh W.) y mantener los informes fuera del ensamblado.

Cuestiones relacionadas