5

在 Azure DevOps 上创建新管道以设置 .NET 项目的 CI 时,我设置了以下 PowerShell 脚本来自动化 .NET Core 设置。

这是脚本:

$ErrorActionPreference="Stop"
$ProgressPreference="SilentlyContinue"

# $LocalDotnet is the path to the locally-installed SDK to ensure the
#   correct version of the tools are executed.
$LocalDotnet=""
# $InstallDir and $CliVersion variables can come from options to the
#   script.
$InstallDir = "./cli-tools"
$CliVersion = "1.0.1"

# Test the path provided by $InstallDir to confirm it exists. If it
#   does, it's removed. This is not strictly required, but it's a
#   good way to reset the environment.
if (Test-Path $InstallDir)
{
    rm -Recurse $InstallDir
}
New-Item -Type "directory" -Path $InstallDir

Write-Host "Downloading the CLI installer..."

# Use the Invoke-WebRequest PowerShell cmdlet to obtain the
#   installation script and save it into the installation directory.
Invoke-WebRequest `
    -Uri "https://dot.net/v1/dotnet-install.ps1" `
    -OutFile "$InstallDir/dotnet-install.ps1"

Write-Host "Installing the CLI requested version ($CliVersion) ..."

# Install the SDK of the version specified in $CliVersion into the
#   specified location ($InstallDir).
& $InstallDir/dotnet-install.ps1 -Version $CliVersion `
    -InstallDir $InstallDir

Write-Host "Downloading and installation of the SDK is complete."

# $LocalDotnet holds the path to dotnet.exe for future use by the
#   script.
$LocalDotnet = "$InstallDir/dotnet"

当我尝试运行构建时,出现以下错误:

错误本身

错误本身(详细)

我已经在谷歌上搜索过有同样问题的人以及如何解决它。但是我还没有找到太多信息。Azure DevOps 论坛也无济于事。

4

1 回答 1

7

正如上面评论中提到的,您所要做的就是在运行代理的机器上安装适当版本的 PowerShell。例如,PowerShell 7。然后你必须确保path设置了环境变量。此变量应指向具有 PowerShell Core 的目录。

视窗

只需使用 Windows Installer 安装 PowerShell Core(.msi来自 PowerShell Git 存储库的文件)。在这种情况下,path环境变量会自动设置或扩展,以便pwsh.exe在此变量下存在目录的路径。

Linux

安装您的发行版支持的 PowerShell Core。确保文件中有一个path变量,其中包含 PowerShell Core 目录的路径。~/.bashrcpath


注意:如果 Azure 代理已在运行,则必须重新启动它才能看到path变量中的更改。因此,在 Windows 上,如果以交互方式运行,只需重新启动代理,如果作为服务运行,则重新启动服务。在 Linux 上,您可以按照指南来更新传递给代理的环境变量。

我知道您已经将脚本配置为 PowerShell Core 脚本,但为了完整起见,我添加以下内容:如果您在 Azure 管道中使用 PowerShell 任务,则默认情况下未设置 PowerShell 的核心版本。为了将任务作为 PowerShell Core 脚本运行,请将其添加到任务的 YAML 代码中:pwsh: true. 否则,如果您仍在使用旧的图形界面,请选中该任务的“高级”标题下的“使用 PowerShell Core”复选框。

于 2020-07-26T13:16:26.000 回答