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

无法从构建工件提取Azure Function,寻求.NET Framework 4.8部署配置方案

Solution for Separating Azure Function Deployment in .NET Framework Pipeline

Why Your Current Archive Task Fails

Your ArchiveFiles@2 task can't find the bin/Release/net48 folder because the VSBuild@1 task with /p:DeployOnBuild=true skips generating the project's local bin directory. Instead, it publishes the Azure Function directly to the $(Build.ArtifactStagingDirectory) root, mixing it with other solution artifacts.

Solution 1: Modify the Function Project's .csproj (Simplest)

Add a property to your Azure Function project's .csproj file to redirect its publish output to a dedicated folder:

<PropertyGroup>
  <!-- Publish the function to a separate folder in the staging directory -->
  <PublishDir>$(Build.ArtifactStagingDirectory)/FunctionApp</PublishDir>
</PropertyGroup>

Update your pipeline to archive this dedicated folder:

- task: VSBuild@1
  displayName: 'Build Solution'
  env:
    SONAR_DOTNET_ENABLE_CONCURRENT_EXECUTION: true
  inputs:
    solution: '$(solution)'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    msbuildArgs: '/p:OutputPath=$(Build.ArtifactStagingDirectory) /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=false /p:SkipInvalidConfigurations=true'
    maximumCpuCount: true  

- task: ArchiveFiles@2
  displayName: 'Archive Function'
  inputs:
    rootFolderOrFile: '$(Build.ArtifactStagingDirectory)/FunctionApp'
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(functionName).zip'
    replaceExistingArchive: true

# Publish separate artifacts for web projects and the function
- publish: $(Build.ArtifactStagingDirectory)/_PublishedWebsites
  displayName: Publish Web Artifacts
  artifact: web-drop

- publish: $(Build.ArtifactStagingDirectory)/$(functionName).zip
  displayName: Publish Function Artifact
  artifact: function-drop

Solution 2: Split Build and Publish Tasks (No Project File Changes)

Separate the build and publish steps to isolate the function's output:

  1. Build the entire solution (without publishing):
- task: VSBuild@1
  displayName: 'Build Entire Solution'
  env:
    SONAR_DOTNET_ENABLE_CONCURRENT_EXECUTION: true
  inputs:
    solution: '$(solution)'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    msbuildArgs: '/p:OutputPath=$(Build.ArtifactStagingDirectory)/Binaries /p:SkipInvalidConfigurations=true'
    maximumCpuCount: true
  1. Publish web projects to their own directory:
- task: VSBuild@1
  displayName: 'Publish Web Projects'
  inputs:
    solution: '**/*Web*.csproj' # Adjust filter to match your web project names
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=false /p:PublishDir=$(Build.ArtifactStagingDirectory)/Websites /p:SkipInvalidConfigurations=true'
  1. Publish the Azure Function to a dedicated folder:
- task: VSBuild@1
  displayName: 'Publish Azure Function'
  inputs:
    solution: '**/$(functionName).csproj'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    msbuildArgs: '/p:DeployOnBuild=true /p:PublishDir=$(Build.ArtifactStagingDirectory)/FunctionApp /p:SkipInvalidConfigurations=true'
  1. Archive and publish artifacts:
- task: ArchiveFiles@2
  displayName: 'Archive Function'
  inputs:
    rootFolderOrFile: '$(Build.ArtifactStagingDirectory)/FunctionApp'
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(functionName).zip'
    replaceExistingArchive: true

- publish: $(Build.ArtifactStagingDirectory)/Websites/_PublishedWebsites
  displayName: Publish Web Artifacts
  artifact: web-drop

- publish: $(Build.ArtifactStagingDirectory)/$(functionName).zip
  displayName: Publish Function Artifact
  artifact: function-drop

Both solutions will give you a separate artifact for the Azure Function, making it easy to deploy independently from your web projects.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:45:14