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

从NuGet还原步骤排除.NET Standard/.NET Core项目后VSTS构建报错如何解决?

解决VSTS构建中project.assets.json找不到的问题

我之前在迁移.NET项目到Azure DevOps(原VSTS)构建时,也碰到过完全一样的报错,结合你的需求(排除.NET Core/Standard项目在NuGet还原步骤),给你几个针对性的解决方案:

1. 拆分还原步骤,明确不同项目的还原方式

.NET Framework和.NET Core/Standard的NuGet依赖还原机制差异很大,混在一起极易出问题,建议按项目类型拆分步骤:

  • 第一步:NuGet Restore 步骤(仅处理.NET Framework项目)
    在步骤的「路径」设置里,通过文件匹配规则排除.NET Core/Standard项目,比如用:
    **\*.csproj;-:**\*.NetCore.csproj;-:**\*.NetStandard.csproj
    
    这样就只会还原传统.NET Framework项目的NuGet包。
  • 第二步:dotnet restore 步骤(仅处理.NET Core/Standard项目)
    指定这些项目的路径或者解决方案,比如:
    dotnet restore YourSolution.sln --verbosity normal
    
    确保这个步骤能覆盖到所有报错的Core/Standard项目,生成对应的project.assets.json。
  • 第三步:VS Build 步骤
    一定要取消勾选「还原NuGet包」选项!这个选项依赖传统NuGet.exe还原流程,对Core项目不适用,反而会干扰之前dotnet restore生成的文件,导致找不到assets.json。

2. 验证dotnet restore的作用范围

有时候dotnet restore如果没指定具体的项目/解决方案,可能只会还原当前目录下的项目,而报错的项目在子目录里没被覆盖到。可以在dotnet restore步骤里明确指定解决方案路径,或者用通配符匹配所有Core/Standard项目:

dotnet restore **\*.NetCore.csproj **\*.NetStandard.csproj

3. 清理构建缓存,避免旧文件干扰

构建目录里的旧obj文件夹可能残留损坏的缓存文件,导致新的assets.json无法生成。可以在所有还原步骤前加一个清理步骤:

  • 添加一个Command Line步骤,执行:
    dotnet clean YourSolution.sln --verbosity quiet
    
    或者用PowerShell步骤直接删除所有obj文件夹:
    Remove-Item -Recurse -Force **\obj
    

4. 检查代理服务器的.NET SDK版本

报错里显示用的是2.1.100版本的SDK,如果你的项目目标框架是更高版本(比如.NET Core 3.1/5+),代理服务器上可能缺少对应的SDK。可以在dotnet restore步骤前加一个dotnet --list-sdks命令,确认已安装的SDK版本是否匹配项目需求,如果不匹配,需要在代理上安装对应版本的SDK,或者在dotnet restore里指定--sdk-version参数强制使用特定版本:

dotnet restore YourSolution.sln --sdk-version 3.1.401

问题根源说明

简单来说,.NET Core/Standard项目的依赖信息是通过dotnet restore生成project.assets.json,而VS Build的「还原NuGet包」选项用的是传统NuGet.exe流程,它不会为Core项目生成这个文件。同时如果dotnet restore没覆盖到报错的项目,或者后续被VS Build的还原操作干扰,就会出现找不到文件的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:52:44