正文
visual studio 容器工具首次加载太慢 vsdbg\vs2017u5 exists, deleting 的解决方案
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
========== 正在准备容器 ==========
正在准备 Docker 容器...
C:\Windows\System32\WindowsPowerShell\v1.\powershell.exe -NonInteractive -NoProfile -WindowStyle Hidden -ExecutionPolicy RemoteSigned -File "C:\Users\MESTC\AppData\Local\Temp\GetVsDbg.ps1" -Version vs2017u5 -RuntimeID linux-x64 -InstallPath "C:\Users\MESTC\vsdbg\vs2017u5"
Info: Using vsdbg version '16.0.20412.1'
Info: Using Runtime ID 'linux-x64'
Info: C:\Users\MESTC\vsdbg\vs2017u5 exists, deleting.
如上情况
感兴趣可以打开 GetVsDbg.ps1
# Copyright (c) Microsoft. All rights reserved.<#
.SYNOPSIS
Downloads the given $Version of vsdbg for the given $RuntimeID and installs it to the given $InstallPath.DESCRIPTION
The following script will download vsdbg and install vsdbg, the .NET Core Debugger.PARAMETER Version
Specifies the version of vsdbg to install. Can be 'latest', 'vs2019', 'vs2017u5', 'vs2017u1', or a specific version string i.e. 15.0.25930.0.PARAMETER RuntimeID
Specifies the .NET Runtime ID of the vsdbg that will be downloaded. Example: linux-x64. Defaults to win7-x64..Parameter InstallPath
Specifies the path where vsdbg will be installed. Defaults to the directory containing this script..INPUTS
None. You cannot pipe inputs to GetVsDbg..EXAMPLE
C:\PS> .\GetVsDbg.ps1 -Version latest -RuntimeID linux-x64 -InstallPath .\vsdbg.LINK
For more information about using this script with Visual Studio Code see: https://github.com/OmniSharp/omnisharp-vscode/wiki/Attaching-to-remote-processesFor more information about using this script with Visual Studio see: https://github.com/Microsoft/MIEngine/wiki/Offroad-Debugging-of-.NET-Core-on-Linux---OSX-from-Visual-StudioTo report issues, see: https://github.com/omnisharp/omnisharp-vscode/issues
#>Param (
[Parameter(Mandatory=$true, ParameterSetName="ByName")]
[string]
[ValidateSet("latest", "vs2019", "vs2017u1", "vs2017u5")]
$Version, [Parameter(Mandatory=$true, ParameterSetName="ByNumber")]
[string]
[ValidatePattern("\d+\.\d+\.\d+.*")]
$VersionNumber, [Parameter(Mandatory=$false)]
[string]
$RuntimeID, [Parameter(Mandatory=$false)]
[string]
$InstallPath = (Split-Path -Path $MyInvocation.MyCommand.Definition)
)$ErrorActionPreference="Stop"# In a separate method to prevent locking zip files.
function DownloadAndExtract([string]$url, [string]$targetLocation) {
Add-Type -assembly "System.IO.Compression.FileSystem"
Add-Type -assembly "System.IO.Compression" [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Try {
$zipStream = (New-Object System.Net.WebClient).OpenRead($url)
}
Catch {
Write-Host "Info: Opening stream failed, trying again with proxy settings."
$proxy = [System.Net.WebRequest]::GetSystemWebProxy()
$proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
$webClient = New-Object System.Net.WebClient
$webClient.UseDefaultCredentials = $false
$webClient.proxy = $proxy $zipStream = $webClient.OpenRead($url)
} $zipArchive = New-Object System.IO.Compression.ZipArchive -ArgumentList $zipStream
[System.IO.Compression.ZipFileExtensions]::ExtractToDirectory($zipArchive, $targetLocation)
$zipArchive.Dispose()
$zipStream.Dispose()
}# Checks if the existing version is the latest version.
function IsLatest([string]$installationPath, [string]$runtimeId, [string]$version) {
$SuccessRidFile = Join-Path -Path $installationPath -ChildPath "success_rid.txt"
if (Test-Path $SuccessRidFile) {
$LastRid = Get-Content -Path $SuccessRidFile
if ($LastRid -ne $runtimeId) {
return $false
}
} else {
return $false
} $SuccessVersionFile = Join-Path -Path $installationPath -ChildPath "success_version.txt"
if (Test-Path $SuccessVersionFile) {
$LastVersion = Get-Content -Path $SuccessVersionFile
if ($LastVersion -ne $version) {
return $false
}
} else {
return $false
} return $true
}function WriteSuccessInfo([string]$installationPath, [string]$runtimeId, [string]$version) {
$SuccessRidFile = Join-Path -Path $installationPath -ChildPath "success_rid.txt"
$runtimeId | Out-File -Encoding utf8 $SuccessRidFile $SuccessVersionFile = Join-Path -Path $installationPath -ChildPath "success_version.txt"
$version | Out-File -Encoding utf8 $SuccessVersionFile
}$ExplitVersionNumberUsed = $false
if ($Version -eq "latest") {
$VersionNumber = "16.0.20412.1"
} elseif ($Version -eq "vs2019") {
$VersionNumber = "16.0.20412.1"
} elseif ($Version -eq "vs2017u5") {
$VersionNumber = "16.0.20412.1"
} elseif ($Version -eq "vs2017u1") {
$VersionNumber = "15.1.10630.1"
} else {
$ExplitVersionNumberUsed = $true
}
Write-Host "Info: Using vsdbg version '$VersionNumber'"if (-not $RuntimeID) {
$RuntimeID = "win7-x64"
} elseif (-not $ExplitVersionNumberUsed) {
$legacyLinuxRuntimeIds = @{
"debian.8-x64" = "";
"rhel.7.2-x64" = "";
"centos.7-x64" = "";
"fedora.23-x64" = "";
"opensuse.13.2-x64" = "";
"ubuntu.14.04-x64" = "";
"ubuntu.16.04-x64" = "";
"ubuntu.16.10-x64" = "";
"fedora.24-x64" = "";
"opensuse.42.1-x64" = "";
} # Remap the old distro-specific runtime ids unless the caller specified an exact build number.
# We don't do this in the exact build number case so that old builds can be used.
if ($legacyLinuxRuntimeIds.ContainsKey($RuntimeID.ToLowerInvariant())) {
$RuntimeID = "linux-x64"
}
}
Write-Host "Info: Using Runtime ID '$RuntimeID'"# if we were given a relative path, assume its relative to the script directory and create an absolute path
if (-not([System.IO.Path]::IsPathRooted($InstallPath))) {
$InstallPath = Join-Path -Path (Split-Path -Path $MyInvocation.MyCommand.Definition) -ChildPath $InstallPath
}if (IsLatest $InstallPath $RuntimeID $VersionNumber) {
Write-Host "Info: Latest version of VsDbg is present. Skipping downloads"
} else {
if (Test-Path $InstallPath) {
Write-Host "Info: $InstallPath exists, deleting."
Remove-Item $InstallPath -Force -Recurse -ErrorAction Stop
} $target = ("vsdbg-" + $VersionNumber).Replace('.','-') + "/vsdbg-" + $RuntimeID + ".zip"
$url = "https://vsdebugger.azureedge.net/" + $target DownloadAndExtract $url $InstallPath WriteSuccessInfo $InstallPath $RuntimeID $VersionNumber
Write-Host "Info: Successfully installed vsdbg at '$InstallPath'"
}
========== 正在准备容器 ==========
正在准备 Docker 容器...
C:\Windows\System32\WindowsPowerShell\v1.\powershell.exe -NonInteractive -NoProfile -WindowStyle Hidden -ExecutionPolicy RemoteSigned -File "C:\Users\MESTC\AppData\Local\Temp\GetVsDbg.ps1" -Version vs2017u5 -RuntimeID linux-x64 -InstallPath "C:\Users\MESTC\vsdbg\vs2017u5"
Info: Using vsdbg version '16.0.20412.1'
Info: Using Runtime ID 'linux-x64'
Info: C:\Users\MESTC\vsdbg\vs2017u5 exists, deleting.
下面说说解决方案
下载包
https://vsdebugger.azureedge.net/vsdbg-(你的版本号.号换成-号)/vsdbg-(你的Runtime ID).zip
例如我的
https://vsdebugger.azureedge.net/vsdbg-16-0-20412-1/vsdbg-linux-x64.zip
下载之后解压到你的安装路径
例如我的
-InstallPath "C:\Users\MESTC\vsdbg\vs2017u5"
然后在该文件下添加一个success_rid.txt文件,内容为你的Runtime ID
例如我的linux-x64
还要添加一个success_version.txt文件,内容为你的版本号,如16.0.20412.1重启 visual studio
下面还会下载另一个,相同的处理方式,再重启一次就ok了最新版操作过程最新下载文件路径
https://vsdebugger.azureedge.net/vsdbg-16-2-10709-2/vsdbg-linux-x64.zip
https://vsdebugger.azureedge.net/vsdbg-16-2-10709-2/vsdbg-linux-musl-x64.zip
解压路径
C:\Users\用户名\vsdbg\vs2017u5 -> vsdbg-linux-x64.zip
C:\Users\用户名\vsdbg\vs2017u5\linux-musl-x64 -> vsdbg-linux-musl-x64.zip解压完了,在路径 C:\Users\用户名\vsdbg\vs2017u5 里面 新建 success_rid.txt 编辑内容 linux-x64,再新建 success_version.txt 编辑内容 16.2.10709.2
在路径 C:\Users\用户名\vsdbg\vs2017u5\linux-musl-x64 里面 新建 success_rid.txt 编辑内容 linux-musl-x64,再新建 success_version.txt 编辑内容 16.2.10709.2
完成
最新下载
https://vsdebugger.azureedge.net/vsdbg-16-3-10904-1/vsdbg-linux-x64.zip
https://vsdebugger.azureedge.net/vsdbg-16-3-10904-1/vsdbg-linux-musl-x64.zip
Info: Previous installation at '/root/vsdbg' not found
Info: Using vsdbg version '16.3.10904.1'
Info: Creating install directory
Using arguments
Version : 'latest'
Location : '/root/vsdbg'
SkipDownloads : 'false'
LaunchVsDbgAfter : 'false'
RemoveExistingOnUpgrade : 'false'
Info: Using Runtime ID 'linux-x64'
Downloading https://vsdebugger.azureedge.net/vsdbg-16-3-10904-1/vsdbg-linux-x64.zip