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

Visual Studio 2017创建ASP.NET Core项目遇依赖缺失及版本冲突问题

ASP.NET Core项目依赖缺失与版本冲突问题解答

问题背景

我使用Visual Studio 2017创建新的ASP.NET Core应用程序,但生成的项目因依赖缺失无法编译。按照其他用户建议执行dotnet restore后,项目可编译运行,但出现大量版本冲突,例如:
1> 检测到‘Reference:C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.netcore.app\2.0.0\ref\netcoreapp2.0\System.AppContext.dll’与‘Reference:C:\Program Files\dotnet\sdk\NuGetFallbackFolder\system.appcontext\4.3.0\ref\netstandard1.6\System.AppContext.dll’之间存在冲突。选择‘Reference:C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.netcore.app\2.0.0\ref\netcoreapp2.0\System.AppContext.dll’,因为其AssemblyVersion‘4.2.0.0’高于‘4.1.0.0’。
(其余冲突示例略)


问题1:创建新ASP.NET Core项目后立即执行dotnet restore是否正常?若不正常,原因是什么?

正常来说,Visual Studio 2017在创建ASP.NET Core项目时会自动触发NuGet包恢复流程,完全不需要手动运行dotnet restore命令。

你遇到需要手动执行的异常情况,核心原因是Visual Studio的「自动恢复缺失包」功能未启用:

  • 当这个功能关闭时,VS不会自动下载、还原项目所需的依赖包,刚创建的项目自然会因为依赖缺失无法编译;
  • 手动执行dotnet restore虽然能临时补上缺失的依赖,但命令行的包恢复不会像VS那样根据项目目标框架(这里是.NET Core 2.0)自动协调版本兼容性,所以就会出现大量组件版本冲突的提示。

问题2:如何消除这些版本冲突?

针对你的场景,最彻底的解决方式是让Visual Studio重新接管依赖管理,步骤如下:

  1. 打开Visual Studio 2017,依次点击 工具 > NuGet包管理器 > 包管理器设置;
  2. 在设置窗口中,选择 NuGet包管理器 > 常规;
  3. 勾选 允许NuGet下载缺失的包 和 在构建期间自动检查缺失的包 这两个选项;
  4. 点击「确定」后,右键你的项目选择 清理解决方案,再重新执行构建。

这样VS会自动根据项目的目标框架版本,拉取并协调所有依赖的兼容版本,从根源上避免手动dotnet restore带来的版本不一致问题。如果之前已经手动执行过dotnet restore,建议先删除项目目录下的obj和bin文件夹,再重新构建,确保所有依赖都是VS自动恢复的版本。


更新补充

后续发现是「恢复缺失包」选项未启用,启用后无需执行dotnet restore即可成功构建项目,且不会出现版本冲突问题。

内容的提问来源于stack exchange,提问作者Ben Rubin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:43:06