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

Azure DevOps Pipeline构建遇'default literal'错误的解决咨询

解决CS8107错误:保留VS2019同时适配CI流水线

这问题我熟!其实核心原因是VS2019默认会给项目启用更高的C#语言版本(或者你在开发时不小心切换了),但你的CI代理构建环境还在使用C#7.0,而default字面量是C#7.1才引入的特性,所以合并后CI构建就报错了。不用放弃VS2019,只要把项目的语言版本明确配置好就行,给你几个解决方案:

方案1:单个项目手动设置语言版本

在VS2019里操作很简单:

  • 右键你的项目 → 选择「属性」
  • 切换到「生成」标签页,点击右下角的「高级」按钮
  • 在弹出的「高级生成设置」窗口里,找到「语言版本」下拉框,选择7.1或者更高版本(比如latest minor或latest,推荐选能覆盖你用到特性的最低版本,避免不必要的兼容性问题)
  • 保存设置后,把变更提交到仓库,重新触发CI构建即可

方案2:批量配置整个解决方案(推荐)

如果你的解决方案有多个项目,一个个改太麻烦,可以用全局配置文件统一设置:

  • 在解决方案的根目录下创建一个名为Directory.Build.props的文件
  • 把以下内容粘贴进去:
<Project>
  <PropertyGroup>
    <!-- 这里可以改成你需要的版本,比如7.1、8.0或者latest -->
    <LangVersion>7.1</LangVersion>
  </PropertyGroup>
</Project>
  • 保存文件并提交到仓库,这样所有项目都会自动继承这个语言版本设置,不用单独修改每个项目的属性

方案3:在CI构建命令中强制指定语言版本

如果不想修改项目文件,也可以直接在CI的构建命令里添加参数强制指定:

  • 如果用dotnet命令构建:
    dotnet build YourSolution.sln /p:LangVersion=7.1
    
  • 如果用MSBuild构建:
    msbuild YourSolution.sln /p:LangVersion=7.1
    

额外检查:CI代理的.NET SDK版本

如果上面的方法都没用,可能是CI代理上的.NET SDK版本太旧——C#7.1需要至少.NET Framework 4.7.2或者.NET Core 2.0及以上的SDK支持。你可以在CI流水线里加一步命令dotnet --version或者msbuild -version,确认SDK版本是否符合要求,如果太低的话升级一下CI代理的SDK即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:19:25