.NET 4.6.1类库上的“添加迁移”需要'System.ValueTuple,版本= 0.0.0.0 [英] 'System.ValueTuple, Version=0.0.0.0 required for Add-Migration on .NET 4.6.1 Class Library
问题描述
我将.net标准类库从Entity Framework Core 1.1升级到Entity Framework 2.0
I upgraded a .net standard class library from Entity Framework Core 1.1 to Entity Framework 2.0
我试图在Entity Framework Core类库上运行添加迁移面向.net Framework 4.6.1
I am trying to run Add-Migration on an Entity Framework Core Class Library that targets .net framework 4.6.1
Add-Migration MyMigration
但是随后出现以下错误
System.IO.FileLoadException:无法加载文件或程序集'System.ValueTuple,版本= 0.0.0.0,区域性=中性,PublicKeyToken = cc7b13ffcd2ddd51'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040)
文件名:'System.ValueTuple,版本= 0.0.0.0,区域性=中性,PublicKeyToken = cc7b13ffcd2ddd51'
,位于Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.SharedTableConvention。在Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ImmediateConventionScope.OnModelBuilt(InternalModelBuilder modelBuilder)处应用(InternalModelBuilder modelBuilder)
在Microsoft.EntityFrameworkCore.Infrastructure.ModelSourceBuild.CreateModel(DbContext context,IConventionSeter IModelValidator验证程序)System.Collections.Concurrent.ConcurrentDictionary2.GetOrAdd(TKey键,Func
2 valueFactory)
在Microsoft.EntityFrameworkCore.Internal。 Microsoft.EntityFrameworkCore.Internal.DbContextServices.get_Model()中的DbContextServices.CreateModel()
Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCall Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(SpectrumCallSite scopedCallSite,ServiceProvider provider)的站点(IServiceCallSite callSite,TArgument参数)
2.VisitCallSite(IServiceCallSite callSite,参数ar )Microsoft.Extensions.DependencyInjection.ServiceProvider中的$ g $ b)<> c__DisplayClass22_0.b__0(ServiceProvider提供者)Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider提供者,类型serviceType)
Microsoft.Extensions.DependencyInjection.ServiceLookup.CallS $ Viitor c> 2.VisitCallSite(IServiceCallSite callSite,TArgument参数)
在Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite构造器CallSite,服务提供商提供者)
在Microsoft.Extensions.DependencyInjectupService。 code> 2.VisitCallSite(IServiceCallSite callSite,TArgument参数)Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite,ServiceProvider provider)中的
Microsoft.Extensions.DependencyInjectionion中的
.CallSiteVisitor
在Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService [T](IServiceProvider提供程序)在Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies()
在Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider()
Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(Func 1 factory)上的Microsoft.EntityFrameworkCore.Infrastructure.AccessorExtensions.GetService [TService](IInfrastructure1 accessor)
)Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(String contextType)中的
Microsoft.EntityFrameworkCore.Design.Intern中的
al.MigrationsOperations.AddMigration(字符串名称,字符串outputDir,字符串contextType)
在Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(字符串名称,字符串outputDir,字符串contextType)
在Microsoft.EntityFrameworkCore.Design。 OperationExecutor.OperationBase。<> c__DisplayClass3_0`1.b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
System.IO.FileLoadException: Could not load file or assembly 'System.ValueTuple, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) File name: 'System.ValueTuple, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.SharedTableConvention.Apply(InternalModelBuilder modelBuilder) at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ImmediateConventionScope.OnModelBuilt(InternalModelBuilder modelBuilder) at Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.CreateModel(DbContext context, IConventionSetBuilder conventionSetBuilder, IModelValidator validator) at System.Collections.Concurrent.ConcurrentDictionary
2.GetOrAdd(TKey key, Func
2 valueFactory) at Microsoft.EntityFrameworkCore.Internal.DbContextServices.CreateModel() at Microsoft.EntityFrameworkCore.Internal.DbContextServices.get_Model() at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSite(IServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor
2.VisitCallSite(IServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSite(IServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor
2.VisitCallSite(IServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceProvider.<>c__DisplayClass22_0.b__0(ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) at Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies() at Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider() at Microsoft.EntityFrameworkCore.Infrastructure.AccessorExtensions.GetService[TService](IInfrastructure1 accessor) at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(Func
1 factory) at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(String contextType) at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name, String outputDir, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name, String outputDir, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
我将nuget包System.ValueTuple添加到了csproj中,但仍然出现错误
I added the nuget package of System.ValueTuple to my csproj but I still get the error
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
推荐答案
添加 AutoGenerateBindingRedirects
和 GenerateBindingRedirectsOutputType
到类库中csproj
Add AutoGenerateBindingRedirects
and GenerateBindingRedirectsOutputType
to your class library csproj
eg
<PropertyGroup>
<TargetFramework>net461</TargetFramework>
....
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
这篇关于.NET 4.6.1类库上的“添加迁移”需要'System.ValueTuple,版本= 0.0.0.0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!