Answers:
现在,您可以直接从市场上下载扩展。
从Visual Studio Code 1.7.1开始,不再拖动或打开扩展名。为了手动安装它,您需要:
根据文档,可以直接下载扩展:
扩展程序的直接下载URL格式为:
https://${publisher}.gallery.vsassets.io/_apis/public/gallery/publisher/${publisher}/extension/${extension name}/${version}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage
这意味着要下载扩展程序,您需要了解
您可以在URL中找到所有这些信息。
这是下载安装的C#v1.3.0扩展的示例:
您可以在扩展程序的URL内的主页上找到发布者和扩展名:
https://marketplace.visualstudio.com/items?itemName= ms-vscode。尖锐的
这里的发布者是ms-vscode
,扩展名是csharp
。
该版本可以在“ 更多信息”区域的右侧找到。
要下载它,您需要从上面的模板创建一个链接:
所有软件包都将具有相同的名称Microsoft.VisualStudio.Services.VSIXPackage,因此,如果您想知道以后是哪个软件包,则需要在下载后重命名。
为了安装扩展
*.vsix
扩展名.vsix
文件扩展程序已成功安装。重新启动以启用它。
javascript:(function() {var ver = document.querySelector("[data-bind='text: version']").innerText; var pub = window.location.href.replace(/.*itemName=(.*?)\.(.*)/,"$1"); var name = window.location.href.replace(/.*itemName=(.*?)\.(.*)/,"$2"); window.location = "https://" + pub + ".gallery.vsassets.io/_apis/public/gallery/publisher/" + pub + "/extension/" + name + "/" + ver + "/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage";})()
加上t3chb0t的答案,不确定为什么下载选项不可见,因此为使用GreaseMonkey / TamperMonkey的用户创建了一个补丁:您可以在此处找到要点代码
或者,您可以仅将以下几行粘贴到浏览器控制台中,链接就会神奇地出现:
let version = document.querySelector('.ux-table-metadata > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(2) > div:nth-child(1)').innerText
, itemDetails = window.location.search.replace('?', '').split('&').filter(str => !str.indexOf('itemName')).map(str => str.split('=')[1])[0]
, [author, extension] = itemDetails.split('.')
, lAuthor = author.toLowerCase()
, href = `https://${lAuthor}.gallery.vsassets.io:443/_apis/public/gallery/publisher/${author}/extension/${extension}/${version}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage`
, element = document.createElement('a');
element.href = href;
element.className = 'vscode-moreinformation dark';
element.innerHTML = 'download .vsix file';
element.download = `${extension}.${version}.vsix`;
document.querySelector('.vscode-install-info-container').appendChild(element);
所有这些建议都很棒,但遵循起来却很痛苦,因为执行代码来构造URL或手动构造疯狂的URL有点烦人...
因此,我整理了一个快速的Web应用程序来简化事情。只需粘贴所需扩展名的URL,就可以下载已经正确命名的扩展名:publisher-extension-version.vsix。
希望有人对它有所帮助:http : //vscode-offline.herokuapp.com/
从今天开始,最新版本扩展的下载URL 逐字嵌入到Marketplace页面的源中,例如URL上的源:
https://marketplace.visualstudio.com/items?itemName=lukasz-wronski.ftp-sync
包含字符串:
https://lukasz-wronski.gallerycdn.vsassets.io/extensions/lukasz-wronski/ftp-sync/0.3.3/1492669004156/Microsoft.VisualStudio.Services.VSIXPackage
我使用以下Python正则表达式提取dl URL:
urlre = re.search(r'source.+(http.+Microsoft\.VisualStudio\.Services\.VSIXPackage)', content)
if urlre:
return urlre.group(1)
我想将PowerShell下载选项放在一堆,以防其他任何人遇到。我有几种离线方案,我循环运行此程序以下载和更新我离线使用的所有扩展。
$page = Invoke-WebRequest -Uri 'https://marketplace.visualstudio.com/items?itemName=ms-vscode.PowerShell'
$details = ( $page.Scripts | ? {$_.class -eq 'vss-extension'}).innerHTML | Convertfrom-Json
$extensionName = $details.extensionName
$publisher = $details.publisher.publisherName
$version = $details.versions.version
Invoke-WebRequest -uri "$($details.versions.fallbackAssetUri)/Microsoft.VisualStudio.Services.VSIXPackage" `
-OutFile "C:\Scripts\extensions\$publisher.$extensionName.$version.VSIX"
添加到t3chb0t的一个很好的答案-使用以下PowerShell命令在文件夹中安装所有VSCode扩展:
cd C:\PathToFolderWithManyDownloadedExtensionFiles
Get-ChildItem . -Filter *.vsix | ForEach-Object { code --install-extension $_.FullName }
然后,重新加载VSCode以完成安装。
我已经将脚本存储在要点中,以便使用PowerShell脚本从市场下载扩展。随时评论分享。
https://gist.github.com/azurekid/ca641c47981cf8074aeaf6218bb9eb58
[CmdletBinding()]
param
(
[Parameter(Mandatory = $true)]
[string] $Publisher,
[Parameter(Mandatory = $true)]
[string] $ExtensionName,
[Parameter(Mandatory = $true)]
[ValidateScript( {
If ($_ -match "^([0-9].[0-9].[0-9])") {
$True
}
else {
Throw "$_ is not a valid version number. Version can only contain digits"
}
})]
[string] $Version,
[Parameter(Mandatory = $true)]
[string] $OutputLocation
)
Set-StrictMode -Version Latest
$ErrorActionPreference = "Stop"
Write-Output "Publisher: $($Publisher)"
Write-Output "Extension name: $($ExtensionName)"
Write-Output "Version: $($Version)"
Write-Output "Output location $($OutputLocation)"
$baseUrl = "https://$($Publisher).gallery.vsassets.io/_apis/public/gallery/publisher/$($Publisher)/extension/$($ExtensionName)/$($Version)/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage"
$outputFile = "$($Publisher)-$($ExtensionName)-$($Version).visx"
if (Test-Path $OutputLocation) {
try {
Write-Output "Retrieving extension..."
[uri]::EscapeUriString($baseUrl) | Out-Null
Invoke-WebRequest -Uri $baseUrl -OutFile "$OutputLocation\$outputFile"
}
catch {
Write-Error "Unable to find the extension in the marketplace"
}
}
else {
Write-Output "The Path $($OutputLocation) does not exist"
}
如果您正在寻找脚本解决方案:
.vsix
文件(请参见下面的示例)unzip
将二进制文件放入~/.vscode/extensions/
:您需要修改解压缩的目录名称,删除一个文件,然后移动/重命名另一个文件。对于API,请先看以下示例,并获得有关如何修改请求的提示,网址为https://github.com/Microsoft/vscode/blob/master/src/vs/platform/extensionManagement/node/extensionGalleryService.ts。
POST https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery?api-version=5.1-preview HTTP/1.1
content-type: application/json
{
"filters": [
{
"criteria": [
{
"filterType": 8,
"value": "Microsoft.VisualStudio.Code",
},
{
"filterType": 7,
"value": "ms-python.python",
}
],
"pageNumber": 1,
"pageSize": 10,
"sortBy": 0,
"sortOrder": 0,
}
],
"assetTypes": ["Microsoft.VisualStudio.Services.VSIXPackage"],
"flags": 514,
}
对以上示例的说明:
"filterType": 8
- FilterType.Target
更多过滤器类型"filterType": 7
- FilterType.ExtensionName
更多过滤器类型"flags": 514
- 0x2 | 0x200
- Flags.IncludeFiles | Flags.IncludeLatestVersionOnly
- 多个标志
python -c "print(0x2|0x200)"
"assetTypes": ["Microsoft.VisualStudio.Services.VSIXPackage"]
-仅获取链接以.vsix
提交更多AssetTypes如果您的脱机实例上具有特定的(旧版)VSCode版本,则无法正确集成最新的扩展。
为确保VSCode和扩展一起使用,必须将它们全部一起安装在在线计算机上。这样可以解决所有依赖关系(具有特定版本),并确保脱机实例的准确配置。
安装VSCode版本,关闭更新,然后安装扩展。从安装位置复制扩展并将其放在目标计算机上。
在联机计算机上安装VSCode的确切版本。然后转到来关闭更新File -> Preferences -> Settings
。在Settings
窗下User Settings -> Application
,去Update
节,并更改参数Channel
来none
。这样可以防止VSCode接触到Internet并自动将您的版本更新为最新版本。
然后转到VSCode扩展部分,并安装所有需要的扩展。将已安装的扩展程序从其安装位置(带有Windows C:\Users\<username>\.vscode\extensions
)复制到目标计算机上的相同位置。
完美运作。