EF Core迁移错误以及所定位程序集的清单定义与程序集引用不匹配

时间:2018-08-31 19:52:34

标签: c# .net-core entity-framework-core

每当我尝试生成迁移时,我都试图使用SQL Operations Studio从VS代码的终端生成数据库。

dotnet ef migrations add init
  

未处理的异常:System.IO.FileLoadException:无法加载文件或程序集'/usr/local/share/dotnet/sdk/2.1.401/DotnetTools/dotnet-ef/2.1.2/tools/netcoreapp2.1/任何/工具/netcoreapp2.0/任何/ef.dll”。找到的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040)

这就是我的.csproj的样子

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.1.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.2" />
  </ItemGroup>
</Project>

有任何解决方法吗?

1 个答案:

答案 0 :(得分:0)

如果您将Microsoft.EntityFrameworkCore.Design软件包添加到错误的项目中,也会发生这种情况。

我将包裹添加到了project A (netcore)。后来我决定将项目A定位为netstandard。然后,我创建了引用Project B (netcore)的{​​{1}}。

当我尝试在项目B中创建迁移时,构建成功,但是迁移会失败,因为在A而非B中引用了project A (now netstandard)。将nuget引用移至B可以解决此问题。