目錄:
一、引言
二、概念與原理
三、問題
1、編譯器錯誤資訊: </b>BC30560: “CrystalReportViewer”在命名空間“CrystalDecisions.Web”中不明確。
2、複製 Crystal Report Viewer 時,顯示“控制項建立錯誤”。
3、建立 Crystal Report Viewer 時,顯示“控制項建立錯誤”。
4、分析器錯誤資訊: 基類包括欄位“CrystalReportViewer1”,但其類型 (CrystalDecisions.Web.CrystalReportViewer) 與控制項 (CrystalDecisions.Web.CrystalReportViewer) 的類型不相容。
5、分析器錯誤資訊: 找到的名為“CrystalDecisions.Shared”的資訊清單定義與程式集引用不匹配。
6、問題:無效的報表源
7、如果你用的是 VS.NET 2003……
8、問題:在 web.config 中建立一個工程時沒有<assemblies><add assembly="CrystalDecisions.CrystalReports.Engine, Version=9.2.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
我手工添加後出現配置錯誤!!!
-------------------------------------------------------------------------
一、引言
在.NET 裡,DLL Hell 問題被解決——包含中繼資料的,具有自描述性的程式集及其 XCopy 部署!
但是,又似乎帶來了新的問題——.NET 程式升級、遷移問題……
升級不再只是簡單安裝,有工作不得不做了……
-------------------------------------------------------------------------
二、概念與原理
1、各種 Crystal Reports 程式的“程式集版本”……
Crystal Reports for Visual Studio .NET 2002
Crystal Reports 管理組件的“程式集版本”為 9.1.3300。
Crystal Reports for Visual Studio .NET 2003 的程式
Crystal Reports 管理組件的“程式集版本”為 9.1.5000.0。
Crystal Reports 9 的程式(僅限於 Visual Studio 2002)
Crystal Reports 管理組件的“檔案版本”為 9.2.9466.x。
Crystal Reports 9.2 的程式(與 Visual Studio 2002 和 2003)
Crystal Reports 管理組件的“檔案版本”為 9.2.9500.x。
------------------------------------------------
2、Crystal Report Viewer
VS.NET 裡的 Crystal Report Viewer 版本是 9.1.3300.0,
Crystal Report 9.2 裡的 Crystal Report Viewer 版本是 9.2.3300.0
為表單添加 Crystal Report Viewer 後,會在 aspx 檔案裡增加以下代碼,缺一不可。
代碼(1)<%@ Register TagPrefix="cr" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web, Version=9.1.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" %>
是為了引入命名空間 CrystalDecisions.Web。
代碼(2)<CR:CrystalReportViewer id="CrystalReportViewer1" runat="server" EnableDrillDown="False" DisplayGroupTree="False" Height="50px" Width="350px"></CR:CrystalReportViewer>
是表示 CrystalReportViewer 控制項的標籤。
-------------------------------------------------------------------------
三、問題
1、編譯器錯誤資訊: </b>BC30560: “CrystalReportViewer”在命名空間“CrystalDecisions.Web”中不明確。
-------------------------
問題分析:
在“設計檢視”刪除 Crystal Report Viewer 後,代碼(1)仍然存在,如果此時再次添加新版本的 Crystal Report Viewer,會導致出現兩個不同的代碼(1):
<%@ Register TagPrefix="cr1" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web, Version=9.2.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" %>
<%@ Page language="vb" Codebehind="Analysis.aspx.vb" AutoEventWireup="false" Inherits="Research_VB.Analysis" %>
<%@ Register TagPrefix="cr" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web, Version=9.1.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" %>
-------------------------
解決方案:
把 Crystal Report Viewer 和所有代碼(1)刪除,重新添加 Crystal Report Viewer。
------------------------------------------------
2、複製 Crystal Report Viewer 時,顯示“控制項建立錯誤”。
-------------------------
問題分析:
複製 Crystal Report Viewer 時,代碼(1)不會被複製。
-------------------------
解決方案:
手工複製代碼(1)。
------------------------------------------------
3、建立 Crystal Report Viewer 時,顯示“控制項建立錯誤”。
-------------------------
問題分析:
如果不是殘存代碼(1),就是匪夷所思……
-------------------------
解決方案:
(1)先在“設計檢視”刪除 Crystal Report Viewer 控制項;
(2)再到“HTML 視圖”刪除代碼(1)
(3)建立 Crystal Report Viewer ;
如果顯示“控制項建立錯誤”,則切換到“HTML”視圖,再切換會“設計”視圖,自動回復!!!
------------------------------------------------
4、分析器錯誤資訊: 基類包括欄位“CrystalReportViewer1”,但其類型 (CrystalDecisions.Web.CrystalReportViewer) 與控制項 (CrystalDecisions.Web.CrystalReportViewer) 的類型不相容。
-------------------------
問題分析:
代碼(1)不是當前 Crystal Report Viewer 的版本
-------------------------
解決方案:
把 Crystal Report Viewer 和所有代碼(1)刪除,重新添加 Crystal Report Viewer。
------------------------------------------------
5、分析器錯誤資訊: 找到的名為“CrystalDecisions.Shared”的資訊清單定義與程式集引用不匹配。
源檔案: E:\web\VenditionSystem\web.config 行: 15
程式集載入跟蹤: 下列資訊有助於確定程式集“CrystalDecisions.Shared”無法載入的原因。
-------------------------
問題分析:
程式集 CrystalDecisions.Shared 在 web.config 裡的資訊清單定義是 CR FOR VS.NET 版本的,而項目中引用的是 CR 9.X 版本的……
-------------------------
解決方案一:
建立一個解決方案,在表單裡添加 Crystal Report Viewer,會自動在 web.config 中產生新版本的資訊清單定義,然後把這個 web.config 複製過來……
解決方案二:
修改 web.config 裡的舊版本的資訊清單定義:
<add assembly="CrystalDecisions.Shared, Version=9.1.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
把 Version=9.1.3300.0 改成 Version=9.2.3300.0。
-------------------------
總結:其它 CrystalDecisions 程式集引用的衝突問題如:CrystalDecisions.CrystalReports.Engine,解決方案同上。
------------------------------------------------
6、問題:無效的報表源
-------------------------
問題分析:
ReportDocument、CrystalReportViewer 組件和 CrystalDecisions 程式集的版本不一致:
-------------------------
解決方案:
(1)刪除所有的 CrystalDecisions 程式集引用;
(2)刪除所有的ReportDocument、CrystalReportViewer 組件;
(3)按照2、修改 Visual Studio.NET 的工具箱設定;
(4)重新添加組件,自動產生新引用。
------------------------------------------------
7、如果你用的是 VS.NET 2003……
問題:就是不行。 升級後沒有拖放控制項沒有代碼(1)!!!
問題分析:
如果你用的是 VS.NET 2003,則 Crystal Reports 9 (版本 9.2.0.x) 不能正確運行,需要升級到 CR 9 (版本 9.2.2.x).
具體問題如下:
- 添加新報表到項目,卻沒有產生相應的報表類檔案
- 添加新報表或者報表檢視器(viewer)到項目,卻沒有自動添加必需的引用
- 不能建立強型別報表(strongly-typed report)的執行個體
解決方案:
升級到 CR 9 (版本 9.2.2.x).
------------------------------------------------
8、問題:在 web.config 中建立一個工程時沒有<assemblies><add assembly="CrystalDecisions.CrystalReports.Engine, Version=9.2.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
我手工添加後出現配置錯誤!!!
解決方案:
建立一個解決方案,添加 Crystal Report 檔案和 Crystal Report Viewer,然後用它的 Web.config 覆蓋原來的程式……