winforms 从.net6升级到.net7 Rc1时违反了类型“T”的约束

mo49yndu  于 2022-11-17  发布在  .NET
关注(0)|答案(1)|浏览(304)

在更改目标框架并更新NuGet包后,我尝试将Winfrom项目从.net6升级到.net7 Rc1,但在运行项目时出现此错误
“T MaxFloatT”上的GenericArguments[0]"System.Int32“违反了类型”T“的约束。
在这一行代码中

System.Windows.Forms.Application.Run(host.Services.GetRequiredService<XtraMain>());

这是Program.cs中的代码

[STAThread]
    private static void Main()
    {
        WindowsFormsSettings.ForceDirectXPaint();
        DevExpress.UserSkins.BonusSkins.Register();
        DevExpress.Skins.SkinManager.EnableFormSkins();
        System.Windows.Forms.Application.EnableVisualStyles();
        System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
        System.Windows.Forms.Application.SetHighDpiMode(HighDpiMode.SystemAware);
        
        using IHost host = CreateHostBuilder().Build();
        System.Windows.Forms.Application.Run(host.Services.GetRequiredService<XtraMain>());

    }

    private static IHostBuilder CreateHostBuilder() =>Host.CreateDefaultBuilder()
            .ConfigureAppConfiguration((context, builder) =>
            {
                builder
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                .AddJsonFile($"appsettings.{context.HostingEnvironment.EnvironmentName}.json", optional: true)
                .AddEnvironmentVariables(); 
            })
            .ConfigureServices((context, services) =>
            {
                services.AddScoped<XtraMain>();
                services.AddPersistenceServices(context.Configuration);
                services.AddApplicationServices();
                services.AddSingleton<IFormFactory, FormFactory>();
            });

这是堆栈跟踪:
在系统.反射.运行时方法信息.生成泛型方法(类型[]方法示例化)在自动Map器.内部.类型详细信息. c__显示类25_1.b__10(方法信息扩展方法)在系统.链接.可枚举的.WhereSelectArrayIterator 2.MoveNext() at System.Linq.Enumerable.ConcatIterator 1. MoveNext()在系统.链接.可枚举的. d__231 3.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator 2. MoveNext()
在系统.链接.可枚举.并集迭代器1.MoveNext() at System.Linq.Enumerable.ConcatIterator 1.MoveNext()位于AutoMapper。内部。类型详细信息。可能的名称()位于AutoMapper.内部.类型详细信息.GetMember(字符串名称)在AutoMapper.配置.约定.DefaultName.GetMatchingMemberInfo中(类型详细信息源类型详细信息,类型目标类型,类型目标成员类型,字符串名称到搜索)在自动Map器.配置.约定.父源到目标名称Map器.获取匹配成员信息(类型详细信息源类型详细信息,类型目标类型,类型目标成员类型,字符串名称到搜索)在AutoMapper.配置.约定.默认成员.Map目标属性到源(配置文件Map选项,类型详细信息源类型详细信息,类型目标类型,类型目标成员类型,要搜索的字符串名称,列出1 resolvers, IMemberConfiguration parent, Boolean isReverseMap) at AutoMapper.Configuration.Conventions.MemberConfiguration.MapDestinationPropertyToSource(ProfileMap options, TypeDetails sourceType, Type destType, Type destMemberType, String nameToSearch, List 1个解析程序,布尔值为AutoMapper处的反向Map)。配置。约定。名称拆分成员。Map目标属性到源(ProfileMap选项,类型详细信息源类型,类型目标类型,类型目标成员类型,要搜索的字符串名称,列出1 resolvers, IMemberConfiguration parent, Boolean isReverseMap) at AutoMapper.Configuration.Conventions.MemberConfiguration.MapDestinationPropertyToSource(ProfileMap options, TypeDetails sourceType, Type destType, Type destMemberType, String nameToSearch, List 1个解析器,布尔值isReverseMap)(类型详细信息源类型详细信息,类型目的地类型,类型目的地成员类型,字符串目的地成员名称,列表1 members, Boolean reverseNamingConventions) at AutoMapper.TypeMap..ctor(Type sourceType, Type destinationType, ProfileMap profile, Boolean isReverseMap) at AutoMapper.ProfileMap.BuildTypeMap(IGlobalConfiguration configurationProvider, ITypeMapConfiguration config) at AutoMapper.ProfileMap.Register(IGlobalConfiguration configurationProvider) at AutoMapper.MapperConfiguration.Seal() at AutoMapper.MapperConfiguration..ctor(MapperConfigurationExpression configurationExpression) at Microsoft.Extensions.DependencyInjection.ServiceCollectionExtensions.<>c.<AddAutoMapperClasses>b__12_2(IServiceProvider sp) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor 2.访问调用站点主(服务调用站点调用站点,参数)在微软。扩展。依赖注入。服务查找。调用站点运行时解析器。访问根缓存(服务调用站点调用站点,运行时解析器上下文上下文)在微软.扩展.依赖注入.服务查找.调用站点访问者2.VisitCallSite(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope) at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(Type serviceType) at System.Collections.Concurrent.ConcurrentDictionary 2.GetOrAdd 2.访问呼叫站点主要(服务呼叫站点呼叫站点,在微软的TArgument参数)。扩展。依赖注入。服务查找。调用站点运行时间解析器。访问部署缓存(服务调用站点临时调用站点,运行时解析器上下文上下文)在Microsoft.扩展.依赖注入.服务查找.调用站点访问者2.VisitCallSite(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor 2.访问调用站点主(服务调用站点调用站点,参数)在微软.扩展.依赖注入.服务查找.调用站点运行时间解析器.访问部署缓存(服务调用站点临时调用站点,运行时解析器上下文上下文)在微软。扩展。依赖注入。服务查找。调用站点访问者2.VisitCallSite(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor 2.访问调用站点主(服务调用站点调用站点,参数)在微软.扩展.依赖注入.服务查找.调用站点运行时间解析器.访问根缓存(服务调用站点调用站点,运行时解析器上下文上下文)在Microsoft.扩展.依赖注入.服务查找.调用站点运行时解析器.访问作用域缓存(服务调用站点调用站点,运行时解析器上下文上下文)在微软。扩展。依赖注入。服务查找。调用站点访问者'2.访问调用站点(服务调用站点调用站点,参数)在微软。扩展。依赖注入。服务查找。调用站点运行时间解析器。解析服务提供者引擎范围)。
在微软.扩展.依赖性注入.服务提供者.获取服务(类型服务类型)在微软.扩展.依赖性注入.服务提供者服务扩展.获取所需服务(I服务提供者,类型服务类型)在微软.扩展.依赖性注入.服务提供者服务扩展.获取所需服务[T](I服务提供者)在SmartWinForm.Program.Main()在C:\Users\MBoua\source\repos\SmartWinForm\SmartWinForm\Program.cs:line 30

相关问题