2009-03-20 3 views
1

Bevor wir Crystal Reports nicht verwendet haben. In unserem Projekt haben wir jetzt Crystal Reports unserem Projekt hinzugefügt. Als ich mein Projekt auf den Server übertrug, kam es zu einem Crystal-Fehler. Ich vermute, dass Crystal nicht auf dem Server installiert ist. Dann installierte Crystal 11 auf dem Server. Die Entwicklungsmaschinen haben Crystal 8.5. Der Server erzeugt diesen Fehler beim Start der Anwendung.mehrere Versionen von Crystal Reports in web.config

"konnte nicht geladen werden Datei oder Assembly 'CrystalDecisions.ReportAppServer.ClientDoc, Version = 10.2.3600.0, Culture = neutral, PublicKeyToken = 692fbea5521e1304' oder eine ihrer Abhängigkeiten. Das System kann die angegebene Datei nicht finden."

  • Ist es möglich, in web.config zwei Version Referenz zu haben? (d. h. Kristall 8.5 & 11)

  • Wie kann dieses Problem gelöst werden?

Verwenden von C#, Visual Studio 2005 und Crystal Reports 8.5 in der Entwicklungsumgebung.

Antwort

0

Es ist nur ein Versionskonflikt. Da Ihr Entwicklungscomputer eine frühere Version verwendet, sucht er nach dieser Version der .DLL-Datei, wenn Sie versuchen, sie auf dem Server auszuführen. Sie sollten wahrscheinlich sicherstellen, dass die gleiche Version auf Ihrem Dev-Computer und dem Server installiert ist, und sicherstellen, dass Ihre web.config die DLL-Dateien von Crystal 11 in beiden verwendet.

Der schnelle Hack für jetzt ist es, die richtige Dateiversion auf dem Server herauszufinden und diese Nummer in die web.config einzugeben.

EDIT: Die andere Möglichkeit ist, die Version der .DLL in Ihrer web.config auf dem Server zu ändern, was im Grunde die anderen sagen. Das Problem ist, dass Sie es jedes Mal ändern müssen, wenn Sie es bereitstellen ... was sehr ärgerlich wäre. Außerdem testen Sie auf dem Dev-Rechner nicht wirklich, weil Sie ein anderes Programm testen. Es ist fast garantiert, dass Fehler in der Produktion auftreten, die Sie in DEV nie sehen werden, da sich zwischen den Versionen etwas geändert hat.

Gibt es einen Grund, warum Sie Crystal 11 nicht auf Ihrem Computer installieren können?

+1

ist es möglich, kann ich beide Version DLL Referenz in Web-Konfiguration? – Kartik

+0

Nein, ich bin mir ziemlich sicher, dass es sich über Objekte beklagen wird, die an zwei Stellen existieren ... – CodeRedick

0

Sie müssen wahrscheinlich die Referenz auf diese DLL in Ihrem Projekt (oder sonst Ordner in Ihren/sind zu erhalten hinzuzufügen.

+0

Kannst du bitte mehr erklären, welche DLL benötigt wird? – Kartik

+0

CrystalDecisions.ReportAppServer.ClientDoc Version 10.2.3600 –

0

Die Fehlermeldungen sagen alles, hat Ihr Server Version 10.2.3600.0 von Crystal Decisions. ReportAppServer.ClientDoc mit Token in passenden entweder den GAC oder irgendwo wird es durch Ihre Anwendung oder Website zu finden?

Klingt wie Sie ein Config-Update auf dem Server.

0

Nein, es ist nicht möglich, referenzieren zwei verschiedene Versionen der gleichnamigen Baugruppe

Eine Möglichkeit, dies zu erreichen, besteht in zwei verschiedenen web.config-Dateien. Einer für den Entwickler, der andere für die Produktion. Verwenden Sie als Teil Ihrer Bereitstellung einfach die prod-Version der Datei. Wenn Ihre Bereitstellung automatisiert ist, sollte dies so einfach sein wie das Löschen des Devs web.config und das Umbenennen der Produktionsversion, nachdem die Dateien kopiert wurden.

0

10.2.3600.0 ist die Version von Crystal Reports, die in Visual Studio 2005 mit dem neuesten Patch enthalten war.

Sie müssen die Crystal Reports-Laufzeit für .net 2.0 auf dem Server installieren. \ Program Files (x86) \ Microsoft Visual Studio 8 \ Crystal Reports \ CRRedist \ X64

x86 : C: \ Program Files (x86) Sie können die Laufzeit Installateure von einem Dev-Maschine

x64 C erhalten \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ BootStrapper \ Pakete \ CrystalReports

0

Beste Lösung ist die Installation der gleichen Laufzeit auf dem Server.
Wie auch immer, können Sie diese XML in Ihrem app.config oder web.config verwenden:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="CrystalDecisions.CrystalReports.Engine" publicKeyToken="692fbea5521e1304" culture="neutral"/> 
     <bindingRedirect oldVersion="xx.x.xxxx.x" newVersion="yy.y.yyyy.y"/> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="CrystalDecisions.Shared" publicKeyToken="692fbea5521e1304" culture="neutral"/> 
     <bindingRedirect oldVersion="xx.x.xxxx.x" newVersion="yy.y.yyyy.y"/> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="CrystalDecisions.ReportSource" publicKeyToken="692fbea5521e1304" culture="neutral"/> 
     <bindingRedirect oldVersion="xx.x.xxxx.x" newVersion="yy.y.yyyy.y"/> 
     </dependentAssembly> 
     <dependentAssembly> 
     ... 
    </assemblyBinding> 
    </runtime> 

wo oldversion ist die Version, die Sie für die Entwicklung nutzen und newVersion die Version auf dem Server installiert ist