2013-05-15 11 views
6

Wir haben eine Anwendung in .NET 4.0 geschrieben, die diese SAP Crystal Reports verwendet. Während derselbe Build (x86) einwandfrei funktioniert, wurde in Windows 2003/2008 (sowohl x86/x64) mit installiertem .NET Framework 4.0 (x86) als auch CrystalReports Laufzeiten (unter Verwendung der 13.0.1.x (von den SAP-Seiten http://scn.sap.com/docs/DOC-7824) installiert. 32bit_13_0_1.msi).Datei oder Assembly konnte nicht geladen werden 'CrystalDecisions.CrystalReports.Engine'/Windows 2012 Server

Wenn das gleiche Zeug in MS 2012 Server (x64) installiert ist, ist bereits .NET Framework 4.5 vorinstalliert, daher konnte ich .NET 4.0 nicht installieren, aber es sieht aus wie es rückwärts kompatibel ist, weil die Die Anwendung funktioniert ordnungsgemäß, mit Ausnahme des Crystal Reports-Bereichs, in dem die Anwendung eine Ausnahme auslöst.

Konnte Datei oder Assembly 'CrystalDecisions.CrystalReports.Engine, Version 10.5.3700.0, culture = neutral, PublicKeyToken = blahblah' oder eine seiner Abhängigkeiten nicht laden. Die angegebene Datei wurde vom System nicht gefunden.

Natürlich sind die Laufzeiten installiert, aber aus irgendeinem Grund kann unsere Anwendung diese DLLs nicht erkennen. Persönlich glaube ich nicht, dass es ein Build-Problem ist, da es mit der gleichen Konfiguration in 2003/2008 Server ordnungsgemäß funktioniert.

Wir haben dort nur Release-Version installiert, so dass keine Debugging-Optionen verfügbar sind, noch VS installiert ist.

Grundsätzlich führen wir nur einige Tests durch, wenn die Anwendung im Server 2012 ordnungsgemäß funktioniert, aber dieses Problem scheint unmöglich zu lösen. Ich habe Stunden auf Google vergebens verbracht. So eine Idee, was sehr geschätzt zu überprüfen ist :)

Dank Tomas


bearbeiten


Lösung: older 2008 Runtimes installiert werden.
Hauptursache: Auf unserer Build-Maschine haben wir beide Laufzeiten immer noch installiert (wir müssen auch ältere Versionen unterstützen). In proj Dateien werden die CR-Assemblies nicht versionsspezifisch referenziert, nur durch den Namen. Während des Build-Prozesses wurde daher die erste niedrigste übereinstimmende Baugruppe von GAC verwendet, weshalb auch die CR 2008 installiert werden musste. Die Lösung besteht darin, die 3rd-Party-Assemblies in Projektdateien auch nach Version zu referenzieren, um die Verwendung von neueren zu erzwingen.

+1

Ok, löste es. Durch die Verwendung von "gacutil/lr" wurde mir klar, dass CR für den Build für VS 2008 verwendet wurde. Das Installieren älterer Laufzeiten löste dieses Problem. – TomKyblik

Antwort

5

Wir stießen auf das gleiche Problem, aber in unserem Projekt wurde die Version angegeben. Auch unser Projekt wurde nicht stark benannt. Eine starke Benennung der Assemblies würde dies zu einem Problem machen.

CSPROJ vor

<Reference Include="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion>  <HintPath>..\..\..\..\..\Workspace\SharedLibraries\trunk\Lib\CrystalDecisions.ReportSource.dll</HintPath> 
    </Reference> 

Beachten Sie die SpecificVersion auf false gesetzt. Wenn wir dies auf wahre Macht umgestellt haben, haben wir das nicht versucht.

Der Hinweispfad wurde entweder nicht gefunden oder war die ältere Version. Wenn es nicht gefunden wurde, dann würde es die erste Crystal dll, die in der GAC gefunden wurde, die Version 10.5 ist.

.csproj nach

<Reference Include="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL" /> 

Dies zwingt die Build gegen die korrekte Version.

1

Eine andere Lösung wäre ein Upgrade auf Crystal Reports für Visual Studio, das mit VS2010 + kompatibel ist. Wenn Sie die Berichte in den letzten Visual Studios bearbeiten möchten, ist dies der richtige Weg. Ihre Lösung, die ältere Runtime zu installieren, löst das Problem, ohne die Lösung zu ändern, während die neuere Crystal-Installation ein Upgrade aller Berichte in der Lösung erfordert.

1

löste ich, dass Montagefehler durch:

  • Zuerst nur unistall Paket NuGet Paket mit
  • Zweite wieder NuGet Paket
  • mit zu installieren ist und die letzte ist, um das zu veröffentlichen und laden VPS und es wird funktionieren.