VS2010中的水晶報表是單獨安裝的,首先要下載SAP的插件CRforVS_13_0.exe,安裝成功后,會在VS的工具欄中出現【報表設計】一欄,里面有3個控件,當把這3個控件任意一個拖拽到頁面上時,控件會報錯,顯示“未將對象引用設置到對象實例”,運行頁面,則會出現如下提示“
CS0433: 類型“CrystalDecisions.Web.CrystalReportViewer”同時存在於“c:\Windows\assembly \GAC_MSIL\CrystalDecisions.Web\13.0.2000.0__692fbea5521e1304 \CrystalDecisions.Web.dll”和
“c:\Windows\assembly\GAC_MSIL\CrystalDecisions.Web\10.5.3700.0__692fbea5521e1304\CrystalDecisions.Web.dll”中
這是因為VS2010中水晶報表V13與VS2008中水晶報表V10版本沖突,導致程序在編譯時無法正確定位到正確版本的DLL文件,在VS2010中,所有的DLL文件,都使用V13,具體解決方法如下:
(1)先檢查web.config文件中關於程序集的引用,如果有不同的版本,改成更高的那個唯一版本就可以編譯成功了.
是否如下,是V13
<assemblies> <add assembly="CrystalDecisions.CrystalReports.Engine, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" /> <add assembly="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" /> <add assembly="CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" /> <add assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" /> <add assembly="CrystalDecisions.ReportAppServer.ClientDoc, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" /> </assemblies
如果還不行,先去提示沖突的目錄里,要用命令行cmd,進入相應目錄,不然進不去,我是
C:\WINDOWS\assembly\GAC_MSIL\CrystalDecisions.CrystalReports.Engine\13.0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll 把這個目錄下的版本是10.5.3700.0的DLL文件刪除,然后把C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\librarymanage\c055f880\67c8205c\assembly\dl3\8cb2bd12\0018735e_b20dc801\CrystalDecisions.CrystalReports.Engine.DLL這個版本是13.0.2000.0的dll復制進來。
1、右鍵選擇項目,選擇屬性頁選項。
2、屬性頁中有引用項,在引用中刪除多余重復的引用。
3、確定后運行,不在報錯。
願這個文章對您有幫助