首页 文章

为类库运行dotnet ef迁移会产生错误MSB4006

提问于
浏览
6

我有一个针对.NET Framework 4.6.2的ASP.NET核心Web应用程序(.NET Framework)项目 .

我已将Entity Framework引入Web项目并已设置并运行

dotnet ef migrations add Initial

来自web项目目录 . 迁移已创建,一切都很好 .

我想重构代码,以便我的实体和数据库上下文在类库中 . 所以我创建了一个单独的类库(.NET Framework)项目,同样针对.NET Framework 4.6.2 .

仍然从我运行的web项目目录

dotnet ef migrations add Initial --startup-project . --project ..\MigrationTest.Entities

其中 MigrationTest.Entities 是我的类库 .

这次我得到:

C:\ Projects \ Experiments \ MigrationTestNoIdentity \ MigrationTest.Entities \ obj \ MigrationTest.Entities.csproj.EntityFrameworkCore.targets(4,5):错误MSB4006:目标依赖关系图中存在循环依赖关系,涉及目标“GetEFProjectMetadata” . [C:\ Projects \ Experiments \ MigrationTestNoIdentity \ MigrationTest.Entities \ MigrationTest.Entities.csproj]无法检索项目元数据 . 确保它是基于MSBuild的.NET Core项目 . 如果您使用的是自定义BaseIntermediateOutputPath或MSBuildProjectExtensionsPath值,请使用--msbuildprojectextensionspath选项 .

它不是.NET Core项目,所以我尝试创建一个.NET Core项目 . 运行迁移命令然后给出:

C:\ Program Files \ dotnet \ sdk \ 1.0.3 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.NET.Sdk.Common.targets(73,5):错误:项目'C:\ Projects \ Experiments \ MigrationTestNoIdentity \ MigrationTest.Entities.Core \ MigrationTest.Entities.Core.csproj'target'.NETCoreApp,Version = v1.1' . 它不能被针对“.NETFramework,Version = v4.6.2”的项目引用 . [C:\ Projects \ Experiments \ MigrationTestNoIdentity \ MigrationTest.Entities.Core \ MigrationTest.Entities.Core.csproj] C:\ Program Files \ dotnet \ sdk \ 1.0.3 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft . NET.Sdk.targets(92,5):错误:找不到'C:\ Projects \ Experiments \ MigrationTestNoIdentity \ MigrationTest.Entities.Core \ MigrationTest.Entities.Core.csproj'的项目信息 . 这可能表示缺少项目参考 . [C:\项目\实验\ MigrationTestNoIdentity \ MigrationTest.Web \ MigrationTest.Web.csproj]

当然,.NET项目不能引用Core项目 .

我正在尝试做一个受支持的场景吗?我的命令行使用有问题吗?别的什么?

1 回答

  • 1

    值得检查以确保您安装了EF Tools软件包 .

    在Visual Studio中打开Package Manager控制台并执行:

    Install-Package Microsoft.EntityFrameworkCore.Tools
    

    然后再次尝试 dotnet ef <commands> .

相关问题