ambiente di sviluppo: Visual Studio 2010 con le offerte + MSSQL 2012 sulla scatola locale
Ambiente di produzione: MSSQL 2008 R2 per server di report live
Ho riscontrato un problema con la distribuzione di un report quando si fa riferimento a System.Core nel report. L'errore è sotto
Errore durante il modulo di codice di caricamento: ‘System.Core, Version = 4.0.0.0, Lingua = il neutro PublicKeyToken = b77a5c561934e089’. Dettagli: Impossibile caricare il file o l'assembly 'System.Core, Versione = 4.0.0.0, Cultura = neutra, PublicKeyToken = b77a5c561934e089' o una delle sue dipendenze. Questo assembly viene creato da un runtime più recente rispetto al runtime attualmente caricato e non può essere caricato.
Sto facendo riferimento a System.Core nel mio report in modo da poter utilizzare la classe TimeZoneInfo. Ho visto altre domande relative all'utilizzo di questa classe in SSRS e non sono stato in grado di risolvere il problema seguendo uno dei consigli in queste domande.
REF
Working with Time Zones in SSRS
SSRS 2k8, custom dll, file not found
Reporting Services 2012 deploy error: "Error while loading code module"
posso fare riferimento al System.Core 4.0 ed eseguire localmente senza alcun problema; tuttavia, quando distribuisco, ottengo il messaggio di errore sopra riportato. Per chiarire ulteriormente ... questo accade DURANTE il processo di distribuzione, non dopo la distribuzione e il tentativo di eseguire il report sul server.
EDIT
La RDL xml rapporto per CodeModules assomiglia a questo:
<CodeModules>
<CodeModule>System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Questo è circa tanto "embedding" posso dire che lo fa. In realtà è solo un riferimento all'assemblea dal suo aspetto.
L'assistenza sarebbe molto apprezzata.
SOLUZIONE Dal momento che non è possibile fare riferimento 4.0, è possibile fare riferimento 3.5 per ottenere l'accesso alla classe TimeZoneInfo.
Fase 1. Creare una classe wrapper per la logica TimeZoneInfo si desidera impiegare
Punto 2. Obiettivo 3.5
Fase 3.Creare una versione di rilascio e copiarla nella directory [DRIVE]: \ Programmi (x86) \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ PrivateAssemblies in modo che il progettista possa caricarla
Passaggio 4. Distribuire lo stesso assieme a SQL Server @ la seguente cartella [DRIVE]: \ Programmi \ Microsoft SQL Server \ MSRS10.SQL2008 \ Reporting Services \ ReportServer \ bin \
Ora è possibile distribuire il report. Così i miei errori sono stati i seguenti
non ho Riferimento 3.5
non ho copiato nella directory appropriata per il mio esempio Visual Studio per raccogliere l'assemblea. Ho spostato la mia installazione in una directory diversa e non l'ho inserita nel nuovo percorso.
UPDATE Se qualcuno sta cercando di ref NET 4.0 ins SSRS 2012 e al di sopra ed ancora ottiene un errore, la risposta è semplice. SSRS 2012 e il 2014 (?) Ancora non supportare .NET 4,0
Questo sembra suggerire che SSRS 2014 non supporta neanche (io sono senza parole, MICROSOFT!) MS KB
Si è tentato di posizionare la versione dell'assieme che si sta utilizzando in modo che il progettista del report possa accedervi. È possibile che il processo di distribuzione stia eseguendo un controllo di versione utilizzando la cartella .. \ Visual Studio 8 \ Common7 \ IDE \ PrivateAssemblies e non la cartella del server di report. Sono certo che questo è dove SSRS cerca gli assembly embedded in fase di progettazione. Questo è probabilmente un avvertimento e non un errore. –
L'assembly è System.Core che si trova nel GAC. Questo è il motivo per cui sono così confuso. Se è nel GAC, perché non viene "raccolto"? – Hardrada
Poiché il rendering e l'elaborazione dei report non si basa su .NET nello stesso modo delle app web/form, suppongo che SSRS tratti ogni assembly incorporato in un file .rdl come assembly personalizzato. –