我有一个针对.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项目。
我正在尝试做一个受支持的场景吗?我的命令行使用有问题吗?还有别的吗?
答案 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"