我们项目的后端是 .Net 标准,前端是 .Net Framework 4.7.2,我们将 C# 项目迁移到 .Net 6.
我们在 UI 组件上使用了 DevExpress 工具包。迁移后,虽然 WinForm 设计器工作正常,但我在 report designer 中遇到错误。
错误提示 System.Runtime.Serialization.Primitives Version 6.0.0.0 not found。 当我查看 nuget 包时,我看到它一直存在到 4.3.0 版。 SDK不应该提供这个包吗?我很困惑。
堆栈信息:
1. Hide Call Stack
at System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type)
at System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext)
at System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
at System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord, MetadataImport scope, Assembly& lastAptcaOkAssembly, RuntimeModule decoratedModule, MetadataToken decoratedToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, Object[] attributes, IList derivedAttributes, RuntimeType& attributeType, IRuntimeMethodInfo& ctor, Boolean& ctorHasParameters, Boolean& isVarArg)
at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent)
at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeType type, RuntimeType caType, Boolean inherit)
at System.ComponentModel.TypeDescriptor.CheckDefaultProvider(Type type)
at System.ComponentModel.TypeDescriptor.NodeFor(Type type, Boolean createDelegator)
at System.ComponentModel.TypeDescriptor.GetDescriptor(Type type, String typeName)
at System.ComponentModel.TypeDescriptor.GetProperties(Type componentType, Attribute[] attributes)
at DevExpress.Data.Browsing.DataBrowserHelperBase.GetListItemPropertiesByType(Type type, PropertyDescriptor[] listAccessors, Int32 startIndex)
at DevExpress.Data.Browsing.DataBrowserHelperBase.GetListItemProperties(Object list, PropertyDescriptor[] listAccessors)
at DevExpress.Data.Browsing.DataBrowserHelper.GetListItemProperties(Object list, PropertyDescriptor[] listAccessors)
at DevExpress.XtraReports.Native.Data.CustomRelatedListBrowser.GetItemProperties()
at DevExpress.Data.Browsing.Design.PropertiesProvider.ToFakedProperties(Object dataSource, String dataMember, PropertyDescriptor[] properties)
at DevExpress.Data.Browsing.Design.PropertiesProvider.ProcessProperties(PropertyDescriptorCollection properties, Object dataSource, String dataMember)
at DevExpress.Data.Browsing.Design.PropertiesProvider.GetItemProperties(Object dataSource, String dataMember, EventHandler`1 action)
at DevExpress.XtraReports.Design.DisplayNameProviderPickManager.GetDataSourceName(Object dataSource, String dataMember, IPropertiesProvider provider, EventHandler`1 callback)
at DevExpress.Data.Browsing.Design.PickManagerBase.<>c__DisplayClass4_0.b__0(IEnumerator enumerator)
at DevExpress.Data.Browsing.Design.ActionExecutor.RunAction()
at DevExpress.Data.Browsing.Design.ActionExecutor.AddAction(Action`1 action)
at DevExpress.Data.Browsing.Design.PickManagerBase.FillContent(IList nodes, Collection`1 dataSources, Boolean addNoneNode)
at DevExpress.XtraReports.Native.TreeListPickManager.FillContent(IList nodes, Collection`1 dataSources, Boolean addNoneNode)
at DevExpress.XtraReports.Native.DataSourceNativeTreeList.UpdateDataSource(IServiceProvider serviceProvider, Object[] dataSources)
at DevExpress.XtraReports.Design.FieldListTreeView.UpdateDataSource(IServiceProvider serviceProvider)
at DevExpress.XtraReports.Design.FieldListController.<>c__DisplayClass28_0.b__0()
at DevExpress.XtraReports.Design.FieldListController.ProcessMessage(Action action)
at System.EventHandler.Invoke(Object sender, EventArgs e)
at System.ComponentModel.Design.DesignerHost.OnLoadComplete(EventArgs e)
at System.ComponentModel.Design.DesignerHost.System.ComponentModel.Design.Serialization.IDesignerLoaderHost.EndLoad(String rootClassName, Boolean successful, ICollection errorCollection)
at System.ComponentModel.Design.Serialization.BasicDesignerLoader.OnEndLoad(Boolean successful, ICollection errors)
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.OnEndLoad(Boolean successful, ICollection errors)
at DevExpress.XtraReports.Design.NetCore.CRCodeDesignerLoader.OnEndLoad(Boolean successful, ICollection errors)
at System.ComponentModel.Design.DesignerHost.BeginLoad(DesignerLoader loader)
我重新安装了 Dotnet Runtimes,重新安装了 DevExpress 工具,重新手动安装了 RepxPackage,安装了 Runtime.Primitives 4.3.0。没有一个是解决方案。
编辑: 我将新报告添加到同一个项目和同一个文件夹并且有效,报告设计器打开了。我应该如何将旧报告修复为新报告。
提前感谢您的回答。
我想为遇到同样错误的人准备一个指南。
此错误是由于报表设计器(DevExpress 工具)无法正常工作或 v16.1 之后的重大更改导致的。
当您在报表中使用任何执行模式在构造函数中调用以下代码块时,此错误就会消失。
ScriptPermissionManager.GlobalInstance = new ScriptPermissionManager(ExecutionMode.Deny);
这适用于陈旧且绑定已过时的报告。我用新的表达式绑定替换了它们。
谢谢。