2009-10-23 7 views
5

एक ऐसे दोस्त की मदद कर रहा था जिसकी "एएसपीनेट वेबसाइट प्रोजेक्ट" के हिस्से के रूप में कुछ 100+ "क्रिस्टल रिपोर्ट 2008" रिपोर्ट हैं।क्रिस्टल रिपोर्ट वास्तव में एएसपीनेट वेबसाइट निर्माण को धीमा कर देती है, उन्हें बाहर करने का कोई तरीका?

मुझे नहीं पता कि कैसे/क्यों, लेकिन जब यह "एएसपीनेट वेबसाइट" प्रोजेक्ट बिल्ड हो रहा है, तो यह रिपोर्ट निर्देशिका के बारे में 15 मिनट "बिल्डिंग" खर्च करता है जहां सभी क्रिस्टल रिपोर्ट रहते हैं।

क्रिस्टल रिपोर्ट फाइलें कर सकते हैं। आरपीटी का निर्माण/संकलित भी किया जा सकता है? असल में ऐसा लगता है कि वे एक एम्बेडेड संसाधन हो सकते हैं। उदाहरण के लिए इस आलेख के अनुसार http://msdn.microsoft.com/en-us/library/aa287962(VS.71).aspx आपको यह बदलने में सक्षम होना चाहिए कि कोई रिपोर्ट एम्बेड की गई है या गुणों से नहीं है, लेकिन "asp.net वेबसाइट प्रोजेक्ट" में उन गुणों को उपलब्ध नहीं है जब एक रिपोर्ट को सोल एक्सप में हाइलाइट किया जाता है।

जब वेबसाइट निर्माण और प्रकाशित होती है, तो सभी रिपोर्ट फ़ाइलों को अभी भी संबंधित रिपोर्ट फ़ोल्डर में रखा जाता है।

तो मुझे लगता है, मेरा सवाल है कि "वेबसाइट प्रोजेक्ट" में क्रिस्टल रिपोर्ट बनाने से वीएस को रोकने का कोई तरीका है? यह बस इतना असहनीय है कि यह असहनीय है।

उत्तर

2

सभी सुझावों के लिए धन्यवाद। बाहर निकलता है इसे एक संसाधन के रूप में एम्बेड करने के लिए स्थापित किया गया था ... जिसमें करीब सौ के साथ निर्माण की हत्या हुई थी। इसे गलत पर सेट करें और बिल्ड एक मिनट से भी कम समय में है।

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

हम कुछ अलग-अलग ऐप्स/वेब पृष्ठों में क्रिस्टल रिपोर्ट का उपयोग करते हैं। उनमें से कोई भी हम वास्तव में विजुअल स्टूडियो प्रोजेक्ट के भीतर रिपोर्ट फाइलों को शामिल नहीं करते हैं। हम फ़ाइलों को एक/रिपोर्ट उप निर्देशिका की तरह कुछ डालते हैं, और फिर फ़ाइल नाम से संदर्भित करते हैं। हम अभी भी क्रिस्टल के एक पुराने संस्करण का उपयोग कर रहे हैं, लेकिन मुझे नहीं लगता कि वे ऐसा कुछ ले लेंगे।

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

आप यह सुनिश्चित करें कि कस्टम उपकरण प्रत्येक रिपोर्ट पर नहीं चल रहा है बनाने की जरूरत है:

हम निम्नलिखित की तरह कोड कुछ का उपयोग करें। डिफ़ॉल्ट रूप से जब आप किसी प्रोजेक्ट में क्रिस्टल रिपोर्ट जोड़ते हैं, तो यह इस कस्टम टूल को संबद्ध करेगा जो रिपोर्ट के लिए रैपर क्लास उत्पन्न करता है। फाइलनाम द्वारा रिपोर्ट को संदर्भित करना बहुत तेज़ है (जैसा कि जोश डब्ल्यू दर्शाता है), और रिपोर्ट को असेंबली से बाहर रखें।

संबंधित मुद्दे