You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Clean架构下为何Web_API未间接引用Microsoft.EntityFrameworkCore.Tools?

问题分析与解答

核心原因:开发依赖包的传递限制

你遇到的问题本质是NuGet开发依赖包的传递引用规则导致的:

  • Microsoft.EntityFrameworkCore.Design属于开发时依赖(Development Dependency),这类包在NuGet默认配置中,不会通过项目引用传递给上层项目(也就是Web_API不会自动间接引用到Infrastructure里的这个包)。
  • 对比普通运行时依赖包(比如Microsoft.EntityFrameworkCore),它们会顺着项目引用链(Domain→Application→Infrastructure→Web_API)自动传递,所以不用在Web_API单独安装也能正常使用,但开发依赖包的设计逻辑就是只作用于安装它的项目的开发环境,不会向上传递。

EF Core工具的运行要求

Update-Database这类EF Core命令行工具的运行逻辑是:

  1. 以你指定的-StartupProject(Web_API)作为执行环境
  2. 工具需要在启动项目中找到Microsoft.EntityFrameworkCore.Design提供的设计时服务入口
  3. 它不会遍历依赖项目的开发依赖包,只会检查启动项目本身是否安装了该包,所以即使Infrastructure里装了,Web_API没装的话就会报错。

你的解决方案是合理的

在Web_API项目中直接安装Microsoft.EntityFrameworkCore.Design是官方推荐的解决方案之一,除此之外你也可以用DotNet CLI命令并指定--framework参数(如果项目是多框架目标),或者修改NuGet配置强制传递开发依赖,但直接在启动项目安装是最简单直接的方式。

内容的提问来源于stack exchange,提问作者Vinuka Osura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 00:42:11