[A]Stimulsoft.Report.StiReport kann nicht in [B]Stimulsoft.Report.StiReport umgewandelt werden.

lireiner

Mitglied
Teammitglied
Hallo, kann mir jemand sagen was das bedeutet? (siehe Titel des Beitrags)

Offensichtlich wird im Programmcode mit 2 verschiedenen Versionen von Stimulsoft operiert.
Das Projekt ist aber neu aufgesetzt.
Aus dem Template SampleDCMListener die Verweise für Stimulsoft waren schon entahlten. Ich habe die Verweise aber auch noch einmal gelöscht und neu gesetzt aus dem Verzeichnis Sage100\Shared.
Es handelt sich dabei um eine Routine die ich im Rezept21 getestet und dann in meine eigene DLL übernommen habe.

Private Sub ExpBerichtAlsPDF(context As IDcmContext)
Dim dcmCtxReportAfterRender As DcmContextReportAfterRender = CType(context, Sagede.OfficeLine.Engine.DcmContextReportAfterRender)
Dim report As Stimulsoft.Report.StiReport = CType(dcmCtxReportAfterRender.Report, Stimulsoft.Report.StiReport)

Dim StiSettings As New Stimulsoft.Report.Export.StiPdfExportSettings

TraceLog.Logger.Information("RL-in fcExpBerichtAlsPDF - ")

StiSettings.EmbeddedFonts = True
StiSettings.ImageQuality = 1
StiSettings.ImageResolution = 100
StiSettings.PdfACompliance = True

Dim fileName As String = dcmCtxReportAfterRender.ReportKey & ".pdf"
TraceLog.Logger.Information("RL-in fcExpBerichtAlsPDF - Pfad Parameter: " & fileName)

Try
Dim parameter As NamedParameters = CType(dcmCtxReportAfterRender.Parameters, NamedParameters)
Dim captionParameter As String = ConversionHelper.ToString(dcmCtxReportAfterRender.Parameters.FromName("$AccessCaption"))
Dim saSplitParam() As String = Nothing
Dim saSplitParamValue() As String = Nothing

fileName = captionParameter & ".pdf"
TraceLog.Logger.Information("RL-in fcExpBerichtAlsPDF 01 - Datei in Pfad: " & fileName)

saSplitParam = Split(captionParameter, ";")
saSplitParamValue = Split(saSplitParam(1), "=")

fileName = saSplitParamValue(1) & ".pdf"
TraceLog.Logger.Information("RL-in fcExpBerichtAlsPDF 02 - Datei in Pfad: " & fileName)
fileName = "C:\Temp\" & fileName
If File.Exists(fileName) Then File.Delete(fileName)
Dim stiExportFormatRL As Stimulsoft.Report.Export.StiExportService

TraceLog.Logger.Information("RL-in fcExpBerichtAlsPDF 02 - Datei in Pfad: " & fileName)

report.ExportDocument(stiExportFormatRL.ExportFormat.Pdf, fileName)
Catch ex As Exception
TraceLog.Logger.Error("RL-in fcExpBerichtAlsPDF: " & CStr(ex.Message))
End Try

TraceLog.Logger.Information("RL-fcExpBerichtAlsPDF - Ende")
End Sub

An der Funktion kann es eigentlich nicht liegen. Ich kann aber auch nicht erkennen wo 2 gleiche Verweise mit unterschiedlicher Version vorhanden sein könnten?

Gruß Reiner
 
Hallo,

Sage liefert ab und zu neue Versionen von Stimulsoft mit Liveupdates aus, die dann im GAC installiert werden.
Die Meldung lässt vermuten, dass das Report-Objekt im DCMContext eine andere Version als die im Projekt referenzierte DLL hat.
Evtl. mal im Projekt die neueste DLL aus dem GAC einbinden (z.B. C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Stimulsoft.Report)
 
Guten Morgen und vielen Dank für die Antwort.
Genau das war auch meine Vermutung, deshalb habe ich im Projekt die aktuellsten Stimulsoft Verweise aus dem Windows Ordner (GAC) eingebunden.
Leider hat das keine Änderung gebracht.
Das Problem tritt offenbar nur auf, wenn ich ein neues Projekt auf der Grundlage des Listener Templates erstelle (übrigens VB.Net).
In einem anderen Fall habe ich einfach das Projekt Rezept21, als Vorlage genutzt, da klappt das Prima.
In beiden Projekten liegen die Stimulsoft.Base und Stimulsoft.Report in der Version 2018.2.1.0 vor.
Mir ist nicht klar wo da der Hacken ist?
Ich habe das Problem zwar mit der Kopie aus Rezept21 lösen können, aber ich wäre doch zufriedener wenn man die Ursache kennen würde, auch im Hinblick auf weitere Projekte.
Gruß Reiner
 
Hallo,

oftmals liegt das Problem wenn man bei Verweisen die Einstellung "Local copy" nicht auf "False" umstellt. Wenn man einmal die dlls überschrieben hat, hilft nur erneute Sage Installation oder Live-Update.
 
Vielen Dank, "LocalCopy" stand allerdings auf "false". ich habe es so gelöst das ich "spezifische Version" auf "true" gesetzt habe. Dann die dlls gelöscht habe und das kompilieren über neu erstellen ausgelöst habe.
Damit hat es dann funktioniert.
Gruß Reiner
 
Eines muss man bedenken. Sollte sich im Zuge eines Live-Updates die Stimulsoft - Version ändern, macht diese Einstellung dann Probleme (Spezifische Version).
 
Danke für den Hinweis, nehme ich imProjekt wieder raus. Jetzt funktioniert es auch wenn das auf "False" steht.
 
Zurück
Oben