VSTS扩展无法找到sdk

时间:2017-10-20 13:31:35

标签: azure-pipelines-build-task

我已经完成了几个例子,但是尽管我每次执行我的realease任务都付出了努力,但它无法找到sdk:

  

[error] System.Management.Automation.CmdletInvocationException:术语' Trace-VstsEnteringInvocation'不被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。

我已根据此post的建议在任务根目录下尝试使用SDK。我也试过从路径中删除版本号。

|-- task root
  |----- ps_modules
     |----- VstsTaskSDK
        |----- 0.10.0
            |------ <corresponding sdk files, including VstsTaskSdk.psd1>
  |----- deploy.ps1
  |----- icon.png
  |----- task.json

我已经尝试将sdk文件夹放在任务上方一级,因为我已经看到了这项工作。再次尝试使用版本号存在和删除。

  |-- root
    |-- task root      
      |----- deploy.ps1
      |----- icon.png
      |----- task.json
    |-- sdk      
      |----- ps_modules
      |----- VstsTaskSDK
        |----- 0.10.0
          |------ <corresponding sdk files, including VstsTaskSdk.psd1>

然后我尝试搞乱vss-extension.json文件中的文件节,包括sdk或sdk / ps_modules / VstsTaskSdk等.15个排列我尝试过但没有成功。

当我创建包时,我从扩展根目录运行以下cmd(不确定是否相关):

tfx extension create --manifest-globs .\vss-extension.json

关于我失踪的想法?

  

更新

我无法解决这个问题,所以我简化了我的测试任务。我的任务现在只包含sdk;没有参数,我的powershell中只有两个cmdlet:

Trace-VstsEnteringInvocation $MyInvocation
Trace-VstsLeavingInvocation $MyInvocation

My Task.json:

{
  "id": "<myguid>",
  "name": "VstsSdkTest",
  "friendlyName": "VstsSdkTest",
  "description": "A Test Task to troubleshoot vststasksdk issue",
  "helpMarkDown": "",
  "category": "Deploy",
  "visibility": [
    "Deploy"
  ],
  "instanceNameFormat": "VstsSdkTest",
  "author": "<myAuthor>",
  "version": {
    "Major": 0,
    "Minor": 1,
    "Patch": 1
  },  
  "execution": {
    "Powershell3": {
      "target": "VstsTaskSDKTest.ps1"
    }
  }
}

我的文件夹结构如下所示:

|-- VstsSdkTest 
  |----- VstsTaskSDKTest.ps1
  |----- icon.png
  |----- task.json
  |----- ps_modules     
    |----- VstsTaskSDK
      |----- <corresponding sdk files, including VstsTaskSdk.psd1>

即使每次执行此简化任务(在托管代理上),也无法找到SDK。它似乎是在与任务版本号相关的任务下的文件夹中查找SDK。

2017-10-24T20:39:08.9599715Z ##[error]File not found: 'd:\a\_tasks\VstsSdkTest_<myGuid>\0.1.1\ps_modules\VstsTaskSdk\VstsTaskSdk.psd1'

2 个答案:

答案 0 :(得分:1)

问题是由于我不明白我每次移动vststasksdk文件夹时都必须更新task.json文件中的版本号。我假设我只需要更新vss-extension.json版本,因为它包含文件节。不是这样的。对我有用的最终文件夹结构是将sdk存储在任务根目录的文件夹中。

|-- VstsSdkTest 
  |----- VstsTaskSDKTest.ps1
  |----- icon.png
  |----- task.json
  |----- ps_modules     
    |----- VstsTaskSDK
      |----- <corresponding sdk files, including VstsTaskSdk.psd1>

答案 1 :(得分:0)

您正在使用PowerShell并调用SDK命令,因此使用 PowerShell3 代替(而不是PowerShell)。

task.json文件的部分代码:

"execution": {
    "PowerShell3": {
      "target": "deploy.ps1",
      "argumentFormat": ""
    }