如何离线安装VSCode扩展?

bla*_*iet 119 visual-studio-code

我已经在没有,也不能连接到互联网的机器上安装了VS Code.根据文档,我可以从命令行安装扩展,如果我有.vsix,但我不知道如何.vsix从市场获得.

如何下载市场上.vsix托管的扩展程序?

t3c*_*b0t 185

更新2017-12-13

您现在可以直接从市场下载扩展程序.

在此输入图像描述

从VSCode 1.7.1开始,拖动或打开扩展程序不再起作用.要手动安装,您需要:

  • 打开扩展侧栏
  • 单击右上角的省略号
  • 选择从VSIX安装

从VSIX安装......


旧方法

根据文档,可以直接下载扩展:

扩展程序的直接下载URL格式如下:

https://${publisher}.gallery.vsassets.io/_apis/public/gallery/publisher/${publisher}/extension/${extension name}/${version}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage
Run Code Online (Sandbox Code Playgroud)

这意味着要下载您需要知道的扩展程序

  • 出版商名称
  • 版本
  • 扩展名

您可以在网址中找到所有这些信息.

以下是下载安装C# v1.3.0扩展程序的示例:

发布者,扩展和版本

您可以在其网址的扩展程序主页上找到发布者和扩展名:

https://marketplace.visualstudio.com/items?itemName= ms-vscode.CSHARP

这是发布者ms-vscode,扩展名是csharp.

该版本可以在更多信息区域的右侧找到.

要下载它,您需要从上面的模板创建一个链接:

https://ms-vscode.gallery.vsassets.io/_apis/public/gallery/publisher/ms-vscode/extension/csharp/1.3.0/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage

所有软件包都具有相同的名称Microsoft.VisualStudio.Services.VSIXPackage,因此如果您想知道以后的软件包,下载后需要重命名.

安装

为了安装扩展程序

  • 重命名文件并为其指定*.vsix扩展名
  • 打开VS Code,转到File > Open File...Ctrl+O选择.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/Micropros.VisualStudio.Services.VSIXPackage";})()` (10认同)
  • @Steffen这对你来说可能很有意思 (3认同)
  • 这个答案有很好的信息。但是,C#是一个不好的例子,特别是因为问题指出*“一台未连接,也无法连接到互联网的机器” *。C#扩展程序无法按此处所述离线安装,因为它会在激活后尝试下载特定于平台的组件,而[必须构建特定的离线程序包](https://github.com/OmniSharp/omnisharp-vscode/wiki/在没有互联网连接的情况下将C%23扩展安装到计算机上)。 (2认同)

mid*_*ido 19

添加到t3chb0t的答案,不知道为什么下载选项不可见,所以为使用GreaseMonkey/TamperMonkey的人创建了一个补丁:你可以在这里找到gist代码

或者您可以在浏览器控制台中粘贴以下行,并且链接会神奇地显示:

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);
Run Code Online (Sandbox Code Playgroud)


小智 14

所有这些建议都很棒,但有点痛苦,因为执行代码来构建URL或手工构建那个疯狂的URL有点烦人......

所以,我把一个快速的网络应用程序放在一起,以使事情变得更容易 只需粘贴您想要的扩展程序的URL,即可下载已正确命名的扩展程序:publisher-extension-version.vsix.

希望有人觉得它有用:http: //vscode-offline.herokuapp.com/

  • 这很酷。不幸的是,当其他人在 GitHub 页面而不是 Heroku 上做类似的事情时,像 ChrisF 这样的用户删除了它们,并说“不要链接到你的 GitHub”。当版主变成恶霸时,这是可悲的。 (2认同)

小智 6

我想添加一个 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"
Run Code Online (Sandbox Code Playgroud)


Ore*_*apo 6

添加到 t3chb0t 的优秀答案 - 使用这些 PowerShell 命令在文件夹中安装所有 VSCode 扩展:

cd C:\PathToFolderWithManyDownloadedExtensionFiles
Get-ChildItem . -Filter *.vsix | ForEach-Object { code --install-extension $_.FullName }
Run Code Online (Sandbox Code Playgroud)

然后,重新加载VSCode以完成安装。


Let*_*t4U 5

截至今天,最新版本扩展程序的下载 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 regexp 来提取 dl URL:

urlre = re.search(r'source.+(http.+Microsoft\.VisualStudio\.Services\.VSIXPackage)', content)
if urlre:
    return urlre.group(1)
Run Code Online (Sandbox Code Playgroud)