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

如何将现有C#程序转换为Azure Pipeline私有市场步骤

将C#程序打包为Azure Pipeline私有市场任务步骤

1. 准备开发环境

  • 安装Node.js
  • 全局安装Azure DevOps扩展工具:npm install -g tfx-cli

2. 初始化扩展项目

  • 执行命令创建Pipeline任务模板:tfx extension init,选择"Azure DevOps Pipeline Task"类型
  • 生成的项目结构中,task目录是任务核心目录,后续所有执行文件和配置都放在这里

3. 打包C#程序(含所有依赖)

  • 因为程序依赖NuGet包和SDK,采用自包含发布确保无需目标代理预装环境:
    dotnet publish YourProject.csproj -c Release -r win-x64 --self-contained true
    
    (若需跨平台,替换win-x64为对应runtime,如linux-x64)
  • 将发布目录(bin/Release/netX.x/win-x64/publish)下的所有文件复制到任务目录的子文件夹,比如task/bin

4. 配置任务元数据(task.json)

  • 修改task/task.json的核心配置:
    • 任务基本信息:更新name、friendlyName、description为自定义内容
    • 执行逻辑:若用PowerShell封装(更灵活),配置execution节点:
      "execution": {
        "PowerShell3": {
          "target": "run.ps1"
        }
      }
      
      新建run.ps1,写入调用逻辑:
      # 若需要传递管道参数,可通过$(inputName)获取
      .\bin\YourProgram.exe $(yourInputParam)
      
    • 输入参数(可选):若需要管道传递参数给程序,在inputs数组中添加:
      "inputs": [
        {
          "name": "yourInputParam",
          "type": "string",
          "label": "自定义参数",
          "required": false,
          "helpMarkDown": "传递给C#程序的运行参数"
        }
      ]
      

5. 打包扩展

  • 编辑根目录的vss-extension.json,配置扩展ID、名称、版本、发布者ID(需提前在Azure DevOps市场注册发布者)
  • 执行打包命令生成VSIX文件:
    tfx extension create --manifest-globs vss-extension.json
    

6. 发布到私有市场

  • 登录tfx工具:tfx extension login --service-url https://marketplace.visualstudio.com
  • 发布扩展到私有市场:
    tfx extension publish --vsix ./your-extension-name.vsix
    
    发布时选择归属你的Azure DevOps组织,完成后即为私有市场可用任务

7. 在管道中使用

  • 进入Azure DevOps组织的「市场」,找到你发布的私有任务,添加到构建/发布管道中,按需配置参数即可

关键注意事项

  • 自包含发布的runtime必须匹配管道代理的操作系统,否则程序无法运行
  • 确保task/bin下包含所有依赖文件,自包含发布会自动打包NuGet包和SDK依赖
  • 若程序需要特定代理能力,可在task.json的demands节点添加要求(如"demand": "Agent.OS -equals Windows_NT")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:01:13