.NET 6 报表设计器 System.Runtime.Serialization.Primivites 版本 6.0.0.0 错误

问题描述 投票:0回答:1

我们项目的后端是 .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)  

Nuget 包管理器:

我重新安装了 Dotnet Runtimes,重新安装了 DevExpress 工具,重新手动安装了 RepxPackage,安装了 Runtime.Primitives 4.3.0。没有一个是解决方案。

编辑: 我将新报告添加到同一个项目和同一个文件夹并且有效,报告设计器打开了。我应该如何将旧报告修复为新报告。

我将报告 c# 文件和设计器复制到新的工作报告中。就出现了

提前感谢您的回答。

c# .net winforms devexpress report-designer
1个回答
0
投票

我想为遇到同样错误的人准备一个指南。

此错误是由于报表设计器(DevExpress 工具)无法正常工作或 v16.1 之后的重大更改导致的。

当您在报表中使用任何执行模式在构造函数中调用以下代码块时,此错误就会消失。

ScriptPermissionManager.GlobalInstance = new ScriptPermissionManager(ExecutionMode.Deny);

这适用于陈旧且绑定已过时的报告。我用新的表达式绑定替换了它们。

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.