【问题标题】:VSTS extension can't find sdkVSTS 扩展找不到 sdk
【发布时间】:2017-10-27 03:50:10
【问题描述】:

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

[错误]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

我的 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'

【问题讨论】:

  • 根据您的回答(已删除),您批准范围变更后是否解决此问题?
  • 不,我认为问题已解决,因此我发布了该答案。进一步调查显示问题仍然存在,因此我将其删除。
  • 你能把所有的文件夹结构的文件打包并在这里分享吗?

标签: azure-pipelines-build-task


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    task.json文件部分代码:

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

    【讨论】:

    • 我尝试将此添加到我的任务中,json,但没有解决。
    • 请检查我的更新。我试图简化我的任务,但它仍然找不到 SDK。
    • @JustinHolbrook 文件需要位于 VstsTaskSDK 文件夹中。因此将文件复制到 VstsTaskSDK 文件夹(删除 0.10.0)。更新后,您需要更新构建定义才能使用新版本的任务。 (您可以在构建日志中查看任务版本是否使用最新版本的任务)
    • 是的,我已经从 SDK 中由版本号标识的文件夹中删除了文件,并将它们放在 VstsTaskSDK 文件夹中。新错误表明它正在查找包含任务版本号的文件夹下的文件。
    • @JustinHolbrook 你在更新构建定义后解决了这个问题吗?您还可以使用新的构建定义进行测试。
    猜你喜欢
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 2019-07-01
    • 2019-12-06
    • 2012-07-18
    • 2013-08-09
    相关资源
    最近更新 更多