2013-05-15 21 views
6

abbiamo un'applicazione scritta in .NET 4.0 che utilizza questo SAP Crystal Reports. Mentre la stessa build (x86) funziona perfettamente OK in Windows 2003/2008 (entrambi x86/x64) con .NET 4.0 framework installato (x86) e CrystalReports runtime installati (pagina a partire da pagine SAP http://scn.sap.com/docs/DOC-7824) utilizzando 13.0.1.x (32bit_13_0_1.msi).Impossibile caricare il file o l'assembly 'CrystalDecisions.CrystalReports.Engine'/Windows 2012 server

Quando la stessa roba è installata nel server MS 2012 (x64), è già preinstallato .NET Framework 4.5, quindi non ho potuto installare .NET 4.0, tuttavia sembra che sia retrocompatibile, perché il l'applicazione funziona correttamente, ad eccezione della parte di Crystal Reports, in cui l'applicazione genera un'eccezione.

Impossibile caricare il file o l'assembly 'CrystalDecisions.CrystalReports.Engine, Versione 10.5.3700.0, culture = neutro, PublicKeyToken = blahblah' o una delle sue dipendenze. Il sistema non trova il file specificato.

Ovviamente i runtime sono installati, ma per qualche motivo la nostra applicazione non è in grado di riconoscere quelle DLL. Personalmente non penso che sia un problema di build visto che funziona correttamente con la stessa configurazione nel server 2003/2008.

Abbiamo installato solo la versione di rilascio, quindi non sono disponibili opzioni di debug, né VS è installato.

In pratica eseguiamo solo alcuni test se l'applicazione funziona correttamente nel server 2012, ma questo problema sembra impossibile da risolvere. Ho trascorso ore su Google senza alcun risultato. Quindi, qualsiasi idea di cosa da controllare è altamente apprezzato :)

Grazie Tomas


Modifica


Soluzione: installare vecchie tempi di esecuzione 2008.
causa root: sul nostro computer di costruzione abbiamo entrambi i runtime installati (dobbiamo supportare anche le versioni precedenti). Nei file proj gli assembly CR non sono specifici della versione di riferimento, solo per il nome. Durante il processo di compilazione, quindi, è stato utilizzato il primo assemblaggio di accoppiamento più basso di GAC e quindi la necessità di installare anche CR 2008. La soluzione è fare riferimento agli assembly di terze parti nei file di progetto anche per versione per forzare l'utilizzo di quelli più recenti.

+1

Ok, risolto. Usando "gacutil/lr" ho capito che il CR utilizzato per la build era per VS 2008. Installare runtime più vecchi risolveva questo problema. – TomKyblik

risposta

5

Abbiamo riscontrato lo stesso problema, tuttavia nel nostro progetto è stata specificata la versione. Anche il nostro progetto non ha avuto un nome forte. Un forte denominazione degli assembly renderebbe questo non un problema.

Csproj prima

<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> 

Avviso lo SpecificVersion è impostata su false. Passando questo alla vera potenza di risolvere il problema, non l'abbiamo provato.

Il percorso suggerito non è stato trovato o era la versione precedente. Se non fosse stato trovato, avrebbe preso la prima dll Crystal trovata nel GAC che è la versione 10.5.

.csproj dopo

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

Questo costringe la formazione contro la versione corretta.

1

Un'altra soluzione sarebbe stata l'aggiornamento a Crystal Reports per Visual Studio, che è compatibile con VS2010 +. Se vuoi essere in grado di modificare i rapporti nei recenti Visual Studio, questa è la strada da percorrere. La soluzione per installare il vecchio runtime risolve il problema senza modificare la soluzione, mentre l'installazione più recente di Crystal richiede l'aggiornamento di tutti i report nella soluzione.

1

ho risolto che l'errore di montaggio da:

  • Prima solo unistall pacchetto utilizzando il pacchetto NuGet
  • In secondo luogo è quello di installare di nuovo utilizzando il pacchetto NuGet
  • E l'ultimo è quello di pubblicare e caricare sul VPS e funzionerà.