使用--configuration运行的dotnet ef会导致MSB4006

时间:2017-04-28 08:52:12

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

我有.NET Core应用程序。我正在尝试执行

dotnet ef --configuration Release database update

生成SQLite Entity Framework数据库(恢复和发布命令都完美无缺)。这失败了

Project.csproj.EntityFrameworkCore.targets(4,5): error MSB4006: There is a circular dependency in the target dependency graph involving target "GetEFProjectMetadata". [C:\Project\src\Project\Project.csproj] Unable to retrieve project metadata. Ensure it's an MSBuild-based .NET Core project. If you're using custom BaseIntermediateOutputPath or MSBuildProjectExtensionsPath values, Use the --msbuildprojectextensionspath option.

我无法谷歌任何东西。

如果我执行

,则不会发生

dotnet ef database update

让我感到困惑,因为项目的调试/发布配置是默认配置。

让我更加困惑的是这个命令

dotnet ef --configuration Debug database update

也不起作用,因此这最终与使用--configuration有关。请注意,我使用--configuration Releasepublish命令,并且没有问题。

我已经在安装了MSVS2017的Windows 10系统上测试了这个,以及在我安装了最新的64位.NET Core SDK的干净的Windows 7系统上。两个系统的行为完全相同。

项目文件未定义任何BaseIntermediateOutputPath或MSBuildProjectExtensionsPath。

项目文件中EF的项目依赖关系如下:

<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="1.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.0.0" />

<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />

即使我从项目文件中删除了大部分内容,也会出现错误。

1 个答案:

答案 0 :(得分:3)

看起来这将在2.0中修复,但目前的解决方法是指定

--framework

https://github.com/aspnet/EntityFramework/issues/8399

在我的实例中它是

--framework netcoreapp1.1