【发布时间】:2017-04-25 20:52:08
【问题描述】:
我有一个面向 .NET Framework 4.6.2 的 ASP.NET Core Web 应用程序 (.NET Framework) 项目。
我已经在web项目中引入了Entity Framework,并且已经设置并运行了
dotnet ef migrations add Initial
来自网络项目目录。迁移已创建,一切正常。
我想重构代码,以便我的实体和数据库上下文位于类库中。所以我创建了一个单独的类库 (.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:\程序 文件\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' 针对“.NETCoreApp,Version=v1.1”。它不能被 以“.NETFramework,Version=v4.6.2”为目标的项目。 [C:\Projects\Experiments\MigrationTestNoIdentity\MigrationTest.Entities.Core\MigrationTest.Entities.Core.csproj] C:\程序 文件\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:\Projects\Experiments\MigrationTestNoIdentity\MigrationTest.Web\MigrationTest.Web.csproj]
当然,.NET 项目不能引用 Core 项目。
我正在尝试做的事情是受支持的场景吗?我的命令行使用有问题吗?还有什么?
【问题讨论】:
-
如果核心 Web 项目引用了核心类库,那么一切都很好。也许这是对 .net 类库的限制。
-
在 .NET Framework Web 应用引用 .NET Standard 类库时也很成功。
-
我猜 dotnet ef 工具不支持针对 .NET Framework 类库,即使引用项目是 ASP.NET Core (.NET Framework) 项目,尽管迁移适用于 Web 项目本身。这可能是合理的,并且超出了 .NET Core 工具的范围,尽管更有用的消息会更好。
-
我也有同样的问题。你能找到任何解决方案吗?
-
@rout0802 见上面的评论。