迁移至SDK后,如何通过csproj文件实现Azure WebJobs的Azure DevOps部署?
简便方案:通过csproj配置托管Azure WebJobs的Web App并兼容Azure DevOps WebPublish
核心方案:在Web App的csproj中添加文件复制规则
替代原有的webjobs-list.json和webjob-publish-settings.json,直接在Web App项目的csproj文件中加入以下配置,就能自动生成WebPublish所需的bin\App_Data\jobs\triggered\MyWebJob目录结构:
<!-- 引用WebJob项目,避免默认程序集引用,改为内容输出 --> <ItemGroup> <ProjectReference Include="..\MyWebJob\MyWebJob.csproj"> <ReferenceOutputAssembly>false</ReferenceOutputAssembly> <OutputItemType>Content</OutputItemType> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </ProjectReference> </ItemGroup> <!-- 构建完成后复制WebJob编译产物到目标目录 --> <Target Name="CopyWebJobAssets" AfterTargets="Build"> <Copy SourceFiles="..\MyWebJob\bin\$(Configuration)\$(TargetFramework)\*" DestinationFolder="$(OutputPath)\App_Data\jobs\triggered\MyWebJob\" SkipUnchangedFiles="true" OverwriteReadOnlyFiles="true" /> </Target>
配置说明
- 替换
..\MyWebJob\MyWebJob.csproj为你的WebJob项目实际路径 $(TargetFramework)会自动匹配项目的目标框架(比如net6.0、net7.0),无需硬编码- 如果是连续触发型WebJob,把路径中的
triggered替换为continuous即可
部署验证
- 本地构建Web App项目后,检查
bin\$(Configuration)\$(TargetFramework)\App_Data\jobs\triggered\MyWebJob目录,确认包含WebJob的可执行文件、配置文件等所有必要产物 - 在Azure DevOps中使用
AzureWebApp@1任务部署时,直接指定Web App项目的输出目录作为部署源,WebPublish会自动将包含WebJob结构的整个目录部署到Azure Web App,无需额外配置
内容的提问来源于stack exchange,提问作者Francis
相关产品推荐
相关产品推荐

