Blazor项目本地构建正常,Azure CI/CD流水线构建报错如何解决?
问题原因
- 本地与IIS部署时,使用的是本地提前生成好的
swaggerClient代理类代码,而Azure CI/CD流水线拉取的是干净的仓库代码,未执行swaggerClient自动生成步骤,因此找不到对应类型。 - 报错日志显示构建目标框架为
netcoreapp3.1,与项目使用的.NET 5框架不匹配,流水线SDK版本配置错误也会引发编译异常。
修复步骤
- 修正流水线.NET SDK版本
在Azure流水线的构建任务前,添加指定.NET 5 SDK的任务,YAML配置示例如下:
若使用可视化界面配置,添加「使用 .NET Core」任务,选择版本为5.x即可。- task: UseDotNet@2 inputs: packageType: 'sdk' version: '5.x' - 配置构建前自动生成Swagger代理逻辑
本地项目先安装NSwag.MSBuildNuGet包,之后在.csproj项目文件中添加如下构建目标,保证每次构建前自动根据swagger.json生成代理类:
替换配置中的<Target Name="GenerateSwaggerClient" BeforeTargets="BeforeBuild"> <Exec Command="nswag openapi2csclient /input:swagger.json /output:Generated/swaggerClient.cs /namespace:你的项目命名空间 /classname:swaggerClient" /> </Target>你的项目命名空间为项目中实际引用swaggerClient的命名空间,保持一致即可。 - 检查.gitignore规则
确认.gitignore中没有屏蔽自动生成的代理类文件/目录,如果有对应规则删除即可,不需要手动提交生成的代理类,由流水线构建时自动生成。 - 修正构建命令
确保流水线的构建命令没有指定错误的目标框架,直接使用dotnet build --configuration Release即可,不要额外添加-f netcoreapp3.1这类参数。
内容的提问来源于stack exchange,提问作者Sirus
相关产品推荐
相关产品推荐

