Azure DevOps中ASP.NET Core 1.x升级2.x后VSTS构建问题咨询
绝对需要调整VSTS(现在叫Azure DevOps Pipelines了)里的CI构建设置,不然十有八九会因为环境不匹配导致构建失败。我帮你梳理几个核心调整点,都是踩过坑总结出来的:
指定正确的ASP.NET Core SDK版本:
原来的1.x SDK完全不兼容2.x项目的编译要求。你需要在构建流程里先添加Use .NET Core任务,明确选择2.x系列的SDK版本(比如2.2.x,和你项目实际用的版本保持一致);如果用的是DotNetCoreCLI任务,也要在任务配置里指定对应的SDK版本,避免用默认的旧版本。更新NuGet相关配置:
ASP.NET Core 2.x要求NuGet版本至少是4.3以上,所以要在VSTS的NuGet还原任务里,把NuGet工具版本切换到符合要求的版本(比如选择4.3.0或更高)。另外,检查项目根目录的NuGet.config,确保包源包含微软官方的.NET Core包源,避免还原2.x依赖包时找不到资源。同步目标框架参数:
你的项目已经把目标框架改成netcoreapp2.x了吧?那一定要在构建任务(比如dotnet build或dotnet publish)的参数里,把--framework的值同步改成netcoreapp2.x(比如netcoreapp2.1),别还停留在原来的1.x框架上。适配测试任务:
如果项目里有单元测试,测试项目的依赖包(比如xUnit的xunit.runner.visualstudio、NUnit的适配包)已经升级到支持2.x的版本了吧?同时,VSTS里的dotnet test任务也要用对应的2.x SDK,不然测试运行时会出现框架不兼容的错误。发布环节的运行时匹配:
如果是发布到Azure App Service,除了确保App Service本身已经设置为ASP.NET Core 2.x运行时,VSTS的发布任务里也要把目标框架和运行时版本对应上,避免发布后应用无法启动。
如果调整完这些还是有问题,建议重点看构建日志里的具体错误信息——比如是SDK找不到、包还原失败还是编译报错,根据错误提示再针对性排查就好。
内容的提问来源于stack exchange,提问作者Sridhar

