[轉]未能加載文件或程序集 CrystalDecisions.Web Version=10.2.3600解決方法

找到你開發的機器上VS安裝目錄中的SDK\v2.0\BootStrapper\Packages\CrystalReports\CRRedist2005_x86.msi
和SDK\v2.0\BootStrapper\Packages\CrystalReports\zh-chs\CRREdist2005_x86_chs.msi這兩個文件,在目標機上安裝一次就能夠了web

用vs2005中的自帶水晶報表10.2開發了一個web項目,發佈到服務器上遇到了一些問題,作個記錄。服務器

 

一 基本發佈app

在本地發佈選擇「僅限運行此應用程序的發佈」後,水晶報表的.rpt文件不會隨之發佈到web目錄,須要手動從項目裏copy。工具

 

二 移至服務器測試

本地發佈後的項目移至服務器後,水晶報表不可用。由於服務器沒有安裝水晶報表的工具,本地好用是由於裝了vs2005默認選項自帶安裝。網站

有人在網上對此述說以下:ui

 

CRRedist2005_x86.msi ,CRREdist2005_x86_chs.msi這兩個文件進行安裝。spa

這兩個文件在你電腦上的位置是C:\ProgramFiles\MicrosoftVisualStudio 8\SDK\v2.0\BootStrapper\Packages\CrystalReports下面的CRRedist2005_x86.msi和 CRRedist2005_x86_cn.msi(或CRRedist2005_x86_jp.msi)。orm

 

我也這樣嘗試了,可是彷佛沒有好用,因而我選擇直接把vs2005在服務器上的默認路徑下重新安裝一次,可是隻安裝CrystalReports組件。 而後在服務器的 C:\Program Files\Common Files\Business Objects\2.7 目錄下會多出來兩個文件夾:Managed和SSChart。其中主要須要Managed文件夾。ip

 

 

三 發佈後測試

而後又發現問題,打開水晶報表界面時顯示「找到的程序集清單定義與程序集引用不匹配」。百度了一下看見CSDN中有人說是由於引用了不一樣版本的System.Web.Extensions緣故,去Webconfig中屏蔽了

<!--<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>

        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>-->

由於本地裝了VS2008,因此版本默認爲3.5了。

重新運行,仍舊是這個錯誤,只是下面的錯誤描述不一樣,關於「CrystalDecisions.Enterprise.InfoStore」版本報錯。

重新回到項目中查看引用及Webconfig發現,引用中 「CrystalDecisions.Enterprise.InfoStore」,「CrystalDecisions.Enterprise.Framework」,及「CrystalDecisions.CrystalReports.Engine「的版本是10.5.3700.0,可是 「CrystalDecisions.Enterprise.Desktop.Report」及 「CrystalDecisions.Shared","CrystalDecisions.Web"版本爲10.2.3600.0,可是 webconfig中卻爲:

 

<add assembly="CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.Shared, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.ReportSource, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.Enterprise.InfoStore, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

       

        <add assembly="CrystalDecisions.Enterprise.Framework, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.Enterprise.Desktop.Report, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

        <add assembly="CrystalDecisions.CrystalReports.Engine, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

 

看了一下,引用中這幾個dll的路徑來自兩個地方:

C:\WINDOWS\assembly\GAC\CrystalDecisions.Enterprise.InfoStore\10.5.3700.0__692fbea5521e1304\CrystalDecisions.Enterprise.InfoStore.dll

和C:\Program Files\Common Files\Business Objects\2.7\Managed\CrystalDecisions.ReportSource.dll

 

直接把引用地址改了,全部10.5.3700的均改成10.2.3600.其餘不變,重新發布。

 

運行正常啦。

在網上大多講的是單獨安裝的水晶報表的部署,和vs2008自帶的不一樣,由於他們的程序集的版本不一樣。
vs2008自帶的水晶報表的版本是10.5的,在官方網站沒有找到。
後來查看MSDN才知道,其實Prerequisites(系統必備)就放在咱們的機器中,
位置就在C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages。
水晶報表的運行時組件就在該目錄下的CrystalReports10_5\CRRedist2008_x86。
將CRRedist2008_x86在要部署的機器上安裝就能夠了

 

找到你開發的機器上VS安裝目錄中的SDK\v2.0\BootStrapper\Packages\CrystalReports\CRRedist2005_x86.msi 和SDK\v2.0\BootStrapper\Packages\CrystalReports\zh-chs\CRREdist2005_x86_chs.msi這兩個文件,在目標機上安裝一次就能夠了 試試.能夠的.

 

 

 

原來使用的是10.2.3600.0 後來由於是Vs2008 默認的版本是10.5.3700.0

在本機測試能經過,在放到服務器上後,出現Could not load file or assembly 'CrystalDecisions.ReportAppServer的錯誤,原來的版本是正常了。

找了不少資料後,原來在服務器上安裝一個程序便可。CRRedist2005_x86.msi

後來下了一個 CRRedist2008_x64.zip 安裝後即解決問題,鬱悶啊,浪費了我1天的時間。

記錄下,若是之後碰到問題能夠有解決方案

     <!--<add assembly="CrystalDecisions.CrystalReports.Engine, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />
    <add assembly="CrystalDecisions.ReportSource, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />
    <add assembly="CrystalDecisions.Shared, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />
    <add assembly="CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />
    <add assembly="CrystalDecisions.ReportAppServer.ClientDoc, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />
    <add assembly="CrystalDecisions.Enterprise.Framework, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />
    <add assembly="CrystalDecisions.Enterprise.InfoStore, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />-->
     <add assembly="System.Configuration.Install, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
     <add assembly="System.Management, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
     <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
     <add assembly="System.Web.Extensions.Design, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
     <add assembly="CrystalDecisions.Data.AdoDotNetInterop, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
     <add assembly="CrystalDecisions.CrystalReports.Engine, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
     <add assembly="CrystalDecisions.ReportSource, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
     <add assembly="CrystalDecisions.Shared, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
     <add assembly="CrystalDecisions.VSDesigner, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
     <add assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
     <add assembly="CrystalDecisions.Windows.Forms, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>

 

Could not load file or assembly 'CrystalDecisions.ReportAppServer

CrystalDecisions.CrystalReports.Engine.ReportDocument..cctor

相關文章
相關標籤/搜索