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

.NET 6升级后CI/CD管道报secrets.json不存在且为必填项如何解决?

问题原因

.NET 6.0.0-preview.1.21102.12版本的Microsoft.Extensions.Configuration.UserSecrets包调整了AddUserSecrets方法的默认参数配置,原本.NET 5版本中用户机密文件默认标记为可选,不存在时不会抛出异常;该预览版本将默认值修改为必选,因此CI/CD环境(没有配置用户机密)运行时就会触发找不到文件的错误。

解决方案

你可以通过以下任意一种方式修复:

  • 显式指定AddUserSecrets的optional参数为true
    修改你的配置构建代码,把AddUserSecrets()调用调整为如下形式:
    config.AddUserSecrets<YourStartupClass>(optional: true)
    
    把泛型参数替换为你项目中对应的类即可,显式声明用户机密文件可选,不存在时直接跳过加载。
  • 升级UserSecrets包到正式发布版本
    这个默认参数的改动属于预览版的临时调整,在.NET 6正式版及后续更新的版本中已经回滚了该默认行为,你可以把Microsoft.Extensions.Configuration.UserSecrets包升级到6.0.0正式版及以上的稳定版本,无需修改代码即可恢复.NET 5时期的默认逻辑。
  • 条件加载用户机密
    如果你只需要在开发环境加载用户机密,可以添加环境判断逻辑,仅在开发环境调用AddUserSecrets:
    if (env.IsDevelopment())
    {
        config.AddUserSecrets<YourStartupClass>();
    }
    
    这种方式也可以避免非开发环境去加载不存在的用户机密文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:24:07