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

VSTS执行dotnet clean失败:RC版.NET Core SDK问题及解决咨询

解决VSTS构建中.NET Core RC版本导致的dotnet clean失败问题

首先咱们先理清几个核心问题:

为什么代理会使用RC版本?

你提到的那个阻止安装预览/RC版本的镜像脚本,作用是防止新的预览版SDK被安装到代理机器上,但如果机器在脚本生效前就已经预装了RC版本(比如镜像更新前就存在),脚本不会主动移除已有的预览版本。而dotnet命令默认会优先使用机器上安装的最新版本,所以就出现了仍然调用RC版SDK的情况。

快速修复方案

1. 用global.json强制指定正式版SDK

这是最可靠的跨环境解决方案,不管代理上预装了什么版本,项目都会严格使用你指定的正式版。在项目根目录创建一个global.json文件,内容如下(替换为你需要的正式版SDK版本,比如2.1.300正式版):

{
  "sdk": {
    "version": "2.1.300"
  }
}

把这个文件提交到代码仓库,下次构建时dotnet命令就会自动切换到指定的正式版SDK,彻底避开RC版本的问题。

2. 调整构建流程,确保NuGet还原前置

从错误日志看,dotnet clean失败是因为找不到project.assets.json——这个文件是NuGet还原生成的。RC版本的.NET Core SDK在执行clean目标时,错误地依赖了这个文件(正式版已经修复了这个逻辑)。你可以在VSTS构建流程中,把NuGet还原步骤放在dotnet clean之前,或者在clean步骤前先执行dotnet restore命令,确保assets文件存在。

3. 自托管代理:手动清理RC版本

如果你的代理是自托管的,可以直接去代理机器的「控制面板→程序和功能」里卸载.NET Core SDK 2.1.300-rc1-008673,然后安装对应的正式版SDK。这样机器默认就会使用正式版SDK了。

补充说明

对于VSTS托管代理,微软的镜像更新存在一定延迟,虽然已经有了阻止安装预览版的脚本,但已有的RC版本需要等镜像迭代更新才会被移除。所以用global.json指定版本是最稳妥的方案,不管是托管还是自托管代理都能生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:53:51