在Visual Studio中访问秘密变量

时间:2017-01-19 22:13:57

标签: c# visual-studio azure-devops

我使用Team Services存储敏感数据,而不是在我的代码中对其进行硬编码。

我们在“Varibles”中将my_secret定义为name,将12345定义为value

如何在我的代码中访问该变量?

enter image description here

在上面的示例中,如何在代码中访问password

有一份文档here,但他们没有提及如何在代码中使用该变量。

3 个答案:

答案 0 :(得分:1)

变量通常作为环境变量传递给构建。但是,默认情况下,秘密不是明确的,您可以在工具的参数中明确使用它们,例如MyTool.exe $(password)

答案 1 :(得分:1)

如果要在构建步骤中访问秘密变量(例如,在自定义构建任务PowerShell中),通常会使用该秘密变量作为任务的输入参数,然后使用VSTS Task SDK& #39;函数Get-VstsInput如下:

$pwd = Get-VstsInput -Name "Input_Name_In_Task.json_File"

然后您可以将其转换为SecureString,如下所示

$securePwd = ConvertTo-SecureString $pwd -AsPlainText -Force

并最终在新的System.Management.Automation.PSCredential对象中使用它。

答案 2 :(得分:0)

这取决于“来自代码”的含义。如果您正在调用脚本,则可以将秘密作为参数传递。

举个例子,这是一个JSON格式的构建定义。

{
  "build": [
    {
      "enabled": true,
      "continueOnError": false,
      "alwaysRun": false,
      "displayName": "PowerShell Script",
      "timeoutInMinutes": 0,
      "task": {
        "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
        "versionSpec": "1.*",
        "definitionType": "task"
      },
      "inputs": {
        "scriptType": "inlineScript",
        "scriptName": "",
        "arguments": "-Baz $(Baz)",
        "inlineScript": "param($Baz)\nWrite-Host \"1\" \nWrite-Host \"$($env:Foo)\" \nWrite-Host \"2\" \nWrite-Host \"$($env:Baz)\"\nWrite-Host $Baz",
        "workingFolder": "",
        "failOnStandardError": "true"
      }
    }
  ],
  "variables": {
    "foo": {
      "value": "bar"
    },
    "baz": {
      "value": null,
      "isSecret": true
    }
  }
}