【发布时间】:2020-02-25 09:23:12
【问题描述】:
我在发布配置文件中的 Visual Studio 和 EF 迁移遇到了一个非常奇怪的情况。给定:
- Visual Studio 2019 v16.4
- .NET Core 项目。面向 .NET Core 3.1
- EF 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>
最后一行没有改变任何东西。我可以使用Add-Migration、Update-Database等PS命令,也可以使用dotnet ef migrations add、dotnet ef database update等cmd命令。 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 工具已安装并从命令行工作.
【问题讨论】:
-
虽然我没有使用 Windows 进行开发,但我可以推测它可能与用户权限有关(我在 Linux 中遇到过类似问题)。如果仅为特定用户配置文件安装这些工具,或者例如,执行发布的用户的 PATH 环境变量中缺少 dotnet ef 所在的目录,那么您可能会得到这个。
-
在我安装 .NET 3.1 SDK 之前它一直有效。尝试删除并重新安装并不能解决问题。同样,我可以从 cmd、包管理器控制台运行这些命令并且它们可以工作。您可以在我的问题中看到这些命令的工作输出。唯一缺少它们的地方——发布设置对话框。
-
我突然遇到与今天完全相同的问题。除了一点 HTML 之外,我的项目并没有真正改变任何东西,但我确实更新了 VS2019。但是,在使用旧版本 VS2019 将相同的存储库克隆到笔记本电脑时,我遇到了同样的问题。
标签: entity-framework asp.net-core .net-core entity-framework-migrations dotnet-tool