我在发布配置文件中的 Visual Studio 和 EF 迁移遇到了一个非常奇怪的情况。鉴于:
- 视觉工作室 2019 v16.4
- .NET 核心项目。面向 .NET Core 3.1
- 英孚 3.1
- Azure 发布配置文件
我在本地项目中创建了迁移,当尝试在发布配置文件中枚举迁移时,我得到
Run dotnet tool restore to make the dotnet-ef command available
我不知道这个错误是什么意思,因为 dotnet-ef 工具似乎已安装:
PM> dotnet --version
3.1.101
PM> dotnet ef --version
Entity Framework Core .NET Command-line Tools
3.1.1
PM> dotnet ef dbcontext list --json --project MyUIProject
Build started...
Build succeeded.
[
{
"fullName": "MyDataProject.MyDbContext",
"safeName": "MyDbContext",
"name": "MyDbContext",
"assemblyQualifiedName": "MyDataProject.MyDbContext, MyDataProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
}
]
PM> dotnet tool restore
Restore was successful.
PM>
最后一行没有改变任何东西。我可以使用 PS 命令(例如Add-Migration
, Update-Database
)或 cmd 命令(例如dotnet ef migrations add
, )dotnet ef database update
。dotnet-ef <...>
也可以工作。他们唯一不起作用的地方——发布配置文件设置。我无法启用复选框以在发布时运行迁移。
Data
项目引用了这些 EF 相关的包:
<...>
<PackageReference Include="microsoft.aspnetcore.Identity.EntityFrameworkCore" Version="3.1.1" />
<PackageReference Include="microsoft.EntityFrameworkCore" Version="3.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="System.Data.SqlClient" Version="4.8.0" />
<...>
UI
仅项目参考Design
:
<...>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<...>
周围有很多类似的问题,例如:Cannot list Entity Framework Migrations in Visual Studio 2019 due to dotnet ef dbcontext --json failure
似乎他们的常见问题是他们没有安装工具,因为dotnet ef
命令不再是 .NET Core SDK 的一部分,而且我的情况不是这样,因为本地 EF 工具已安装并从命令行工作。