Entity framework core ';System.ValueTuple,在.NET 4.6.1类库上添加迁移所需的版本=0.0.0.0

Entity framework core ';System.ValueTuple,在.NET 4.6.1类库上添加迁移所需的版本=0.0.0.0,entity-framework-core,Entity Framework Core,我将.net标准类库从Entity Framework Core 1.1升级到Entity Framework 2.0 我正在尝试在实体框架核心类库上运行添加迁移,该类库的目标是.NETFramework 4.6.1 Add-Migration MyMigration 但是我得到了下面的错误 System.IO.FileLoadException:无法加载文件或程序集“System.ValueTuple,版本=0.0.0,区域性=neutral,PublicKeyToken=CC7B13FFC

我将.net标准类库从Entity Framework Core 1.1升级到Entity Framework 2.0

我正在尝试在实体框架核心类库上运行添加迁移,该类库的目标是.NETFramework 4.6.1

Add-Migration MyMigration
但是我得到了下面的错误

System.IO.FileLoadException:无法加载文件或程序集“System.ValueTuple,版本=0.0.0,区域性=neutral,PublicKeyToken=CC7B13FFCD2DD51”或其依赖项之一。定位的程序集清单定义与程序集引用不匹配。(来自HRESULT的异常:0x8013100) 文件名:“System.ValueTuple,版本=0.0.0.0,区域性=中性,PublicKeyToken=CC7B13FFCD2DD51” 位于Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.SharedTableConvention.Apply(InternalModelBuilder modelBuilder) 在Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ImmediateConventionScope.OnModelBuilt(InternalModelBuilder modelBuilder)中 位于Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.CreateModel(DbContext上下文、IConventionSetBuilder约定SetBuilder、IModelValidator验证器) 在System.Collections.Concurrent.ConcurrentDictionary
2.GetOrAdd(TKey键,Func
2值工厂) 在Microsoft.EntityFrameworkCore.Internal.DbContextServices.CreateModel()中 在Microsoft.EntityFrameworkCore.Internal.DbContextServices.get_Model()中 位于Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor
2.VisitCallSite(IServiceCallSite callSite,Target参数)
位于Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite ScopedCallSite,ServiceProvider提供程序)
位于Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor
2.VisitCallSite(IServiceCallSite callSite,Target参数) 位于Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite ConstructorCallSite,ServiceProvider提供程序) 位于Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor
2.VisitCallSite(IServiceCallSite callSite,Target参数)
位于Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite ScopedCallSite,ServiceProvider提供程序)
位于Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor
2.VisitCallSite(IServiceCallSite callSite,Target参数) 在Microsoft.Extensions.DependencyInjection.ServiceProvider.c\u DisplayClass22\u 0.b\u 0(ServiceProvider provider) 位于Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider提供程序,键入serviceType) 位于Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider提供程序) 在Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies()中 在Microsoft.EntityFrameworkCore.DbContext.get\u InternalServiceProvider()中 位于Microsoft.EntityFrameworkCore.Infrastructure.AccessorExtensions.GetService[TService](IInfrastructure
1访问器)
在Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(funct
1 factory) 位于Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(字符串contextType) 位于Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(字符串名称、字符串输出目录、字符串上下文类型) 位于Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(字符串名称、字符串输出目录、字符串上下文类型) 在Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.c__DisplayClass3_0`1.b__0()中 位于Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(操作)

我将System.ValueTuple的nuget包添加到我的csproj中,但仍然得到错误

 <PackageReference Include="System.ValueTuple" Version="4.4.0" />

自动生成BindingRedirects
生成BindingRedirectSoutputType
添加到类库csproj

e、 g


net461
....
真的
真的

我也遇到了同样的问题,在安装.NET 4.7.1 framework之后,它得到了修复。由于StructureMap未能实例化Entity framework Core的dbContext,因此出现了以下可爱的错误:

尝试创建“[NameOfController]”类型的控制器时出错。确保控制器具有无参数公共构造函数

为了使其在.NET Framework 4.6.2中运行,我必须做比这里提供的答案更多的工作:

安装nugets(源代码:)

  • System.Threading.Tasks.Extensions(我使用了最新的v4.5.2)
  • System.ValueTuple(我使用了旧的4.3.1)
添加到包含存储库的.proj(源:)


真的
真的

和web.config(来源:各种)


...
...
...

那么您是否也更改了类库的目标框架?因为我的类库项目说:netstandard2.0我也应该改变吗?不,你不应该像我的项目目标那样做。netframework而不是。netcore。只需添加上面提到的两个属性,看看是否有效。
<PropertyGroup>
    <TargetFramework>net461</TargetFramework>

    ....

    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>