Azure DevOps .NET 5发布OrchardCore结果与Visual Studio本地发布差异问题
问题描述
我尝试在Azure DevOps中发布OrchardCore网站,本地Visual Studio构建发布后站点运行正常,但从Azure DevOps发布的结果存在差异:包含少量额外文件,dll文件大小普遍存在数KB的差距,尝试调整多种Azure DevOps配置均无效。
实际表现为站点提示部分css、js文件不存在,使用DotPeek反编译可见对应文件确实存在,但浏览器无法访问。同环境下另一个Orchard Core Theme项目可以正常提供css、js资源访问,将UAT环境的故障IIS站点指向本地发布包即可正常运行,排除IIS配置问题,确定问题与DevOps的yml配置有关,不确定当前使用的VSBuild、MSBuild、DotNetCoreCLI等任务对象是否正确。
当前使用的yml配置文件如下:
parameters: # 此yml为模板文件,流水线脚本会传入csproj文件的路径 - name: solution type: string default: '' steps: - script: echo ${{ parameters.solution }} echo $(System.DefaultWorkingDirectory) - task: NuGetToolInstaller@1 inputs: versionSpec: 5.8.x - task: UseDotNet@2 displayName: '使用 .NET Core SDK 5.0.x' inputs: packageType: 'sdk' version: '5.0.x' - task: DotNetCoreCLI@2 displayName: '还原NuGet包' inputs: command: restore projects: '**/*.csproj' includeNugetOrg: true - task: DotNetCoreCLI@2 displayName: '构建项目' inputs: command: publish zipAfterPublish: true publishWebProjects: false projects: '${{ parameters.solution }}' arguments: '-c $(buildConfiguration) -o $(build.artifactStagingDirectory)' #arguments: '-c $(buildConfiguration) -o $(build.artifactStagingDirectory) -f net5.0 --no-restore' - task: PublishBuildArtifacts@1 displayName: '发布构建产物 (drop)' inputs: PathToPublish: '$(build.artifactstagingdirectory)' ArtifactName: 'drop'
解决方案
经确认问题与构建流水线完全无关。Git仓库同一路径下同时存在wwwroot和WWWroot两个文件夹,但仅wwwroot会被拉取到开发设备。推测构建过程优先识别了大写的WWWroot文件夹,导致部分js、css资源无法访问,也解释了站点一直返回旧版本资源的现象。即便使用dotPeek反编译也未快速定位问题,因为正确版本的文件实际存在,只是未注意到额外的WWWroot文件夹,OrchardCore在构建时优先读取了该文件夹。
内容的提问来源于stack exchange,提问作者Will Comeaux
相关产品推荐
相关产品推荐

