2009-10-23 2 views
5

Hat einem Freund geholfen, der mehr als 100 "Crystal Reports 2008" -Berichte als Teil eines "asp.net-Website-Projekts" hat.Crystal Reports wirklich verlangsamt asp.net Website Build, eine Möglichkeit, sie auszuschließen?

Ich weiß nicht, wie/warum, aber wenn dieses "asp.net Website" -Projekt erstellt, verbringt es etwa 15 Minuten "Erstellen" das Berichtsverzeichnis, in dem alle Crystal Reports befinden.

Können Crystal Reports-Dateien .rpt sogar erstellt/kompiliert werden? Eigentlich sieht es so aus, als könnten sie eine eingebettete Ressource sein. Wie zum Beispiel nach diesem Artikel http://msdn.microsoft.com/en-us/library/aa287962(VS.71).aspx sollten Sie in der Lage sein zu ändern, ob ein Bericht eingebettet ist oder nicht von Eigenschaften, ABER in "asp.net Website-Projekt" sind diese Eigenschaften nicht verfügbar, wenn ein Bericht in sol exp hervorgehoben ist.

Wenn die Website erstellt und veröffentlicht wird, werden alle Berichtsdateien immer noch in einen entsprechenden Berichtsordner abgelegt.

Also ich denke, meine Frage gibt es eine Möglichkeit, VS zu stoppen Crystal Reports in "Website-Projekt" zu bauen? Es dauert nur so lange, es ist unerträglich.

Antwort

2

Danke für alle Vorschläge. Es stellte sich heraus, dass es als eine Ressource eingebettet wurde, die mit fast hundert den Build tötete. Setzen Sie es auf false und der Build ist in weniger als einer Minute.

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

Wir verwenden Crystal Reports in vielen verschiedenen Apps/Webseiten. In keinem von ihnen enthalten wir die Berichtsdateien selbst innerhalb des Visual Studio-Projekts. Wir legen die Dateien in das Verzeichnis "/ Reports" und verweisen dann auf den Dateinamen. Wir benutzen immer noch eine ziemlich alte Version von Crystal, aber ich würde nicht denken, dass sie so etwas herausnehmen würden.

Wir verwenden Code etwa wie folgt:

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

Sie müssen sicherstellen, dass Anpassungs-Tool nicht auf jedem Bericht ausgeführt wird. Wenn Sie einem Projekt einen Crystal Reports-Bericht hinzufügen, verknüpft es standardmäßig dieses benutzerdefinierte Tool, das eine Wrapper-Klasse für den Bericht generiert. Es ist viel schneller, den Bericht nach Dateiname zu referenzieren (wie Josh W. demonstriert) und die Berichte aus der Assembly herauszuhalten.