gpt4 book ai didi

entity-framework - 运行 dotnet tool restore 以使 dotnet-ef 命令可用

转载 作者:行者123 更新时间:2023-12-04 04:17:25 30 4
gpt4 key购买 nike

我在发布配置文件中遇到了 Visual Studio 和 EF 迁移的奇怪情况。鉴于:

  • Visual Studio 2019 v16.4
  • .NET 核心项目。目标 .NET Core 3.1
  • EF 3.1
  • Azure 发布配置文件

  • 我在本地项目中创建了迁移,当尝试在发布配置文件中枚举迁移时,我得到
    Run dotnet tool restore to make the dotnet-ef command available

    enter image description here

    我不知道这个错误是什么意思,因为似乎安装了 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 工具已安装并从命令行工作。

    最佳答案

    我找到了 2 种方式

  • 尝试以管理员身份运行visual studio。
  • 如果 (1.) 不起作用,请在项目中输入 dotnet new tool-manifest , dotnet tool install dotnet-ef , dotnet tool restore .

  • 说明

    不知何故,visual studio 无法访问安装了全局包的 C://Users/AlexanderK/.nuget。我们的电脑上可能有一些软件会阻止 Visual Studio 访问全局安装的包。
    我不确定 nuget 是如何工作的,但是 nodejs 的 npm 可以在本地和全局安装的包中搜索。
    因此,在我们的 Visual Studio 案例中,本地没有安装 dotnet-ef,但无法全局访问它。

    在 (1.) 中,我们以管理员身份运行并尝试授予 Visual Studio 访问全局安装包的权限。

    在 (2.) 中,我们在本地安装 dotnet-ef,因此 nuget 肯定会在本地找到该包。

    更多关于 dotnet tool命令 - Official Docs

    我建议您使用 (1.),因为大多数 PC 不会有这个问题,并且当您在全局范围内拥有 dotnet-ef 之类的软件包时,在本地安装它并不是一个好主意..

    关于entity-framework - 运行 dotnet tool restore 以使 dotnet-ef 命令可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60391220/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com