2009-10-23 6 views
5

Pomagał znajomemu, który ma ponad 100 raportów "Crystal Reports 2008" w ramach "projektu strony asp.net".Kryształowe raporty naprawdę spowalniają budowę strony asp.net, w jaki sposób można je wykluczyć?

Nie wiem jak/dlaczego, ale kiedy budowany jest ten projekt strony "asp.net", trwa to około 15 minut "budowania" katalogu raportów, w którym znajdują się wszystkie raporty Crystal Reports.

Czy pliki Crystal Reports .rpt można nawet kompilować/kompilować? W rzeczywistości wygląda na to, że mogą być zasobem osadzonym. Jak na przykład zgodnie z tym artykułem http://msdn.microsoft.com/en-us/library/aa287962(VS.71).aspx powinieneś być w stanie zmienić, czy raport jest osadzony, czy nie z właściwości, ALE w "projekcie strony asp.net" te właściwości nie są dostępne, gdy raport jest podświetlony w sol exp.

Po utworzeniu i opublikowaniu witryny wszystkie pliki raportów są nadal umieszczane w odpowiednim folderze raportów.

Sądzę, że moje pytanie brzmi: w jaki sposób zatrzymać VS przed budowaniem Crystal Reports w "projekcie strony internetowej"? Po prostu trwa to tak długo, że jest nie do zniesienia.

Odpowiedz

2

Dzięki za wszystkie sugestie. Okazuje się, że został ustawiony jako osadzony jako zasób ... który z blisko setką zabił kompilację. Ustaw go na wartość false, a kompilacja trwa mniej niż minutę.

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

Używamy raportów kryształów w kilku różnych aplikacjach/stronach internetowych. W żadnym z nich nie uwzględniamy samych plików raportów w projekcie Visual Studio. Pliki umieszczamy w katalogu podrzędnym/Reports, a następnie odwołujmy się do nich nazwami plików. Wciąż używamy dość starej wersji Crystal, ale nie sądzę, że mogliby coś takiego zrobić.

Używamy kodu coś jak następuje:

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

Musisz upewnić się, że niestandardowe narzędzie nie jest prowadzony na każdym raporcie. Domyślnie po dodaniu raportu kryształu do projektu zostanie skojarzone to niestandardowe narzędzie, które generuje klasę opakowania dla raportu. O wiele szybsze jest odwoływanie się do raportu przez nazwę pliku (jak pokazuje to Josh W.) i trzymanie raportów poza złożeniem.

Powiązane problemy