Страница 1 из 1

Загрузка Engine из Embedded Streams

Добавлено: 26 янв 2009, 13:00
Sergaent
Приветствую.

Проблема такая, чтобы с приложением не шла куча соблазнительных Dll, я переделал приложение таким образом, чтобы движок стимула у грузился из ресурсов самого приложения. Но при этом получается, что движок стал неработоспособен при вызове дизайнера, равно как и отчёта. Ошибки такие:
При вызове отчёта:

Код: Выделить всё

Exception:
Невозможно преобразовать объект типа "Stimulsoft.Report.Components.StiMargins" к типу "Stimulsoft.Report.Components.StiMargins".
Stack Trace:
   в System.RuntimeType.CheckValue(Object value, Binder binder, CultureInfo culture, BindingFlags invokeAttr)
   в System.Reflection.MethodBase.CheckArguments(Object[] parameters, Binder binder, BindingFlags invokeAttr, CultureInfo culture, Signature sig)
   в System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   в System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   в System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture)
   в System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, Object[] index)
   в Stimulsoft.Base.Serializing.StiSerializing.SetProperty(PropertyInfo p, Object obj, Object value)
   в Stimulsoft.Base.Serializing.StiSerializing.DeserializeObject(Object obj, StiPropertyInfoCollection props)
   в Stimulsoft.Base.Serializing.StiSerializing.DeserializeObject(Object obj, StiPropertyInfoCollection props)
   в Stimulsoft.Base.Serializing.StiSerializing.DeserializeObject(Object obj, StiPropertyInfoCollection props)
   в Stimulsoft.Base.Serializing.StiSerializing.DeserializeObject(Object obj, StiPropertyInfoCollection props)
   в Stimulsoft.Base.Serializing.StiSerializing.Deserialize(Object obj, Stream stream, String application)
   в Stimulsoft.Report.SaveLoad.StiXmlReportSLService.Load(StiReport report, Stream stream)
   в Stimulsoft.Report.StiReport.Load(StiReportSLService service, Stream stream)
   в Stimulsoft.Report.StiReport.Load(Stream stream)
   в Stimulsoft.Report.StiReport.Load(String path)
   в StimulReporting.StimulReporting.Make(Entity r, DataSet DataSet, String TemplateFile) в D:\!Projects\Sln\r_StimulReporting\StimulReporting.cs:строка 45
А соответственно при вызове дизайнера:

Код: Выделить всё

Exception:
Конструктор для типа "Stimulsoft.Report.Design.StiDesigner" не найден.
Stack Trace:
   в System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   в System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   в System.Activator.CreateInstance(Type type, Object[] args)
   в Stimulsoft.Base.StiActivator.CreateObject(String typeName, Object[] arguments)
   в Stimulsoft.Base.StiActivator.CreateObject(Type type, Object[] arguments)
   в Stimulsoft.Report.StiReport.PrepareForDesign()
   в Stimulsoft.Report.StiReport.StartDesigner(StiReport report, Form parentForm, Boolean dialogForm)
   в Stimulsoft.Report.StiReport.Design(Form parentForm, Boolean dialogForm)
   в Stimulsoft.Report.StiReport.Design(Boolean dialogForm)
   в StimulReporting.StimulReporting.RunDesigner(Entity r, DataSet DataSet) в D:\!Projects\Sln\r_StimulReporting\StimulReporting.cs:строка 62
Если рядом с приложением положить все Dll стимула, то отчёт получить становится возможным, а открыть дизайнер нельзя с диагнозом:

Код: Выделить всё

Exception:
В экземпляре объекта не задана ссылка на объект.
Stack Trace:
   в Stimulsoft.Report.Design.StiDesignerControl.OnRefreshStatusBar(Object sender, EventArgs e)
   в Stimulsoft.Report.Design.StiDesignerControl.OnRefreshStatusBar(EventArgs e)
   в Stimulsoft.Report.Design.StiDesignerControl.InvokeRefreshStatusBar()
   в Stimulsoft.Report.Design.StiDesignerControl.Localize()
   в Stimulsoft.Report.Design.StiBuilder.BuildReport()
   в Stimulsoft.Report.Design.StiDesignerControl.OnLoad(EventArgs e)
   в System.Windows.Forms.UserControl.OnCreateControl()
   в System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   в System.Windows.Forms.Control.CreateControl()
   в System.Windows.Forms.Control.OnVisibleChanged(EventArgs e)
   в System.Windows.Forms.ScrollableControl.OnVisibleChanged(EventArgs e)
   в System.Windows.Forms.Control.OnParentVisibleChanged(EventArgs e)
   в System.Windows.Forms.Control.OnVisibleChanged(EventArgs e)
   в System.Windows.Forms.ScrollableControl.OnVisibleChanged(EventArgs e)
   в System.Windows.Forms.Form.OnVisibleChanged(EventArgs e)
   в System.Windows.Forms.Control.SetVisibleCore(Boolean value)
   в System.Windows.Forms.Form.SetVisibleCore(Boolean value)
   в System.Windows.Forms.Control.set_Visible(Boolean value)
   в System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   в System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   в System.Windows.Forms.Application.RunDialog(Form form)
   в System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
   в System.Windows.Forms.Form.ShowDialog()
   в Stimulsoft.Report.Design.StiDesigner.Stimulsoft.Report.Design.IStiDesigner.ShowDialog()
   в Stimulsoft.Report.StiReport.StartDesigner(StiReport report, Form parentForm, Boolean dialogForm)
   в Stimulsoft.Report.StiReport.Design(Form parentForm, Boolean dialogForm)
   в Stimulsoft.Report.StiReport.Design(Boolean dialogForm)
   в StimulReporting.StimulReporting.RunDesigner(Entity r, DataSet DataSet) в D:\!Projects\Sln\r_StimulReporting\StimulReporting.cs:строка 62
Как я понимаю - это происходит ввиду того, что где-то внутри движка идёт непосредственная загрузка сборок из файлов, но все сборки стимула я гружу вручную из ресурсов. Можно как-то обойти эту проблему?

С уважением, Олег Калинин

Загрузка Engine из Embedded Streams

Добавлено: 26 янв 2009, 15:39
Sergaent
Пораскинув мозгами я пришёл к выводу, что такой фокус с Embedded Streams не пройдёт, если при формировании отчёта происходит его компиляция, т.к. компилятор требует наличия файлов библиотек именно в виде файлов.
В дизайнере происходит что-то похожее на компиляцию?

С уважением, Олег Калинин

Загрузка Engine из Embedded Streams

Добавлено: 27 янв 2009, 14:48
Vital
Здравствуйте Олег,
Sergaent писал(а):Пораскинув мозгами я пришёл к выводу, что такой фокус с Embedded Streams не пройдёт, если при формировании отчёта происходит его компиляция, т.к. компилятор требует наличия файлов библиотек именно в виде файлов.
В дизайнере происходит что-то похожее на компиляцию?

С уважением, Олег Калинин
К сожалению, такой подхоод не пройдет. Отчет именно компилируется, как Вы написали.

Спасибо.