我已经完成了几个例子,但是尽管我每次执行我的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'
答案 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": ""
}