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

时间:2017-04-25 20:52:09

标签: entity-framework-core

我有一个针对.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。

仍然来自我运行的网络项目目录

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:目标依赖关系图中存在循环依赖关系,涉及目标&# 34; GetEFProjectMetadata&#34 ;. [C:\项目\实验\ 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 :\项目\实验\ MigrationTestNoIdentity \ MigrationTest.Entities.Core \ MigrationTest.Entities.Core.csproj'目标' .NETCoreApp,版本= v1.1'。它不能被针对.NETFramework,Version = v4.6.2'的项目引用。 [C:\项目\实验\ 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的项目信息: \项目\实验\ MigrationTestNoIdentity \ MigrationTest.Entities.Core \ MigrationTest.Entities.Core.csproj&#39 ;.这可能表示缺少项目参考。 [C:\项目\实验\ MigrationTestNoIdentity \ MigrationTest.Web \ MigrationTest.Web.csproj]

当然,.NET项目无法引用Core项目。

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

2 个答案:

答案 0 :(得分:4)

值得检查以确保已安装EF Tools软件包。

在Visual Studio中打开“程序包管理器”控制台并执行:

Install-Package Microsoft.EntityFrameworkCore.Tools

然后再次尝试您的dotnet ef <commands>

答案 1 :(得分:1)

超级愚蠢,但我不得不使用正斜杠,因为我使用的是 Mac。

所以在 OP 的例子中:

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

我从包含DatabaseContext的项目中运行命令,则命令如下:

dotnet ef migrations add Initial --startup-project "../MyProject.Api"