Crystal Reports действительно замедляет сборку сайта asp.net, есть ли способ их исключить? - PullRequest
5 голосов
/ 23 октября 2009

Помогал другу, у которого есть более 100 отчетов Crystal Reports 2008 в рамках проекта веб-сайта asp.net.

Я не знаю, как и почему, но когда создается этот проект «сайта asp.net», он тратит около 15 минут на «создание» каталога отчетов, в котором находятся все Crystal Reports.

Могут ли файлы Crystal Reports .rpt собираться / компилироваться? На самом деле похоже, что они могут быть встроенным ресурсом. Как, например, в соответствии с этой статьей http://msdn.microsoft.com/en-us/library/aa287962(VS.71).aspx вы сможете изменить, встроен ли отчет в свойства или нет, но в «проекте веб-сайта asp.net» эти свойства недоступны, когда отчет выделен в sol эксп.

Когда сайт создается и публикуется, все файлы отчетов по-прежнему помещаются в соответствующую папку отчетов.

Так что я думаю, у меня вопрос, есть ли способ помешать VS создавать Crystal Reports в "проекте веб-сайта"? Это просто ооочень долго, это невыносимо.

Ответы [ 3 ]

2 голосов
/ 18 ноября 2010

Спасибо за все предложения. Оказывается, это было настроено, чтобы быть встроенным как ресурс .. который с сотней убивал сборку Установите значение false, и сборка займет не более минуты.

<businessObjects>
    <crystalReports>
        <rptBuildProvider>
            <add embedRptInResource="false"/>
        </rptBuildProvider>
    </crystalReports>
</businessObjects>
1 голос
/ 23 октября 2009

Мы используем Crystal Reports в нескольких различных приложениях / веб-страницах. Ни в одном из них мы фактически не включаем сами файлы отчетов в проект Visual Studio. Мы помещаем файлы во что-то вроде подкаталога / Reports, а затем ссылаемся на них по имени файла. Мы по-прежнему используем довольно старую версию Crystal, но я не думаю, что они что-то из этого вытащат.

Мы используем код примерно так:

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 голосов
/ 27 октября 2009

Необходимо убедиться, что пользовательский инструмент не запускается для каждого отчета. По умолчанию, когда вы добавляете отчет Crystal в проект, он связывает этот пользовательский инструмент, который создает класс-оболочку для отчета. Намного быстрее ссылаться на отчет по имени файла (как демонстрирует Джош У.) и хранить отчеты вне сборки.

...