回答:
拡張機能をマーケットプレイスから直接ダウンロードできるようになりました。
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。Cシャープ
ここでは、発行元は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を手動で構築したりするのは面倒なので、従うのはちょっと面倒です...
だから、私は物事を簡単にするために簡単なウェブアプリを一緒に投げました。必要な拡張機能のURLを貼り付けるだけで、適切に名前が付けられた拡張機能のダウンロードが発行されます。publisher-extension-version.vsix。
誰かがそれが役に立ったと願っています:http : //vscode-offline.herokuapp.com/
本日現在、拡張機能の最新バージョンのダウンロード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"
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"
}
Pythonユーザーの場合、t3chbotの優れた答えで使用するパターンは次のようになります。
https://marketplace.visualstudio.com/_apis/public/gallery/publishers/ms-python/vsextensions/python/{version_number}/vspackage
必ず右にスクロールして、バージョン番号を入力する必要がある場所を確認してください。
スクリプトによる解決策を探している場合:
.vsix
ファイルをダウンロードするためのURLを返すことができます(下の例を参照)unzip
バイナリを慎重に~/.vscode/extensions/
:解凍したディレクトリ名を変更し、1つのファイルを削除して、別のファイルを移動/名前変更する必要があります。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
その他のFilterTypes"filterType": 7
- FilterType.ExtensionName
その他のFilterTypes"flags": 514
- 0x2 | 0x200
- Flags.IncludeFiles | Flags.IncludeLatestVersionOnly
- より多くの国旗
python -c "print(0x2|0x200)"
"assetTypes": ["Microsoft.VisualStudio.Services.VSIXPackage"]
- 追加のAssetTypeの.vsix
ファイルへのリンクのみを取得するオフラインインスタンスに特定の(レガシー)バージョンのVSCodeがある場合、最新の拡張機能をプルすると正しく統合されない可能性があります。
VSCodeと拡張機能が一緒に機能することを確認するには、オンラインマシンにすべて一緒にインストールする必要があります。これにより、(特定のバージョンの)依存関係が解決され、オフラインインスタンスの正確な構成が保証されます。
VSCodeバージョンをインストールし、更新をオフにして、拡張機能をインストールします。インストールされている場所から拡張機能をコピーし、ターゲットマシンに配置します。
オンラインマシンに正確なバージョンのVSCodeをインストールします。次に、にアクセスして更新をオフにしますFile -> Preferences -> Settings
。ではSettings
、ウィンドウ、下User Settings -> Application
に行くUpdate
セクション、およびのためのパラメータを変更Channel
しますnone
。これにより、VSCodeがインターネットにアクセスして、バージョンが最新に自動更新されるのを防ぎます。
次に、VSCode拡張機能セクションに移動し、必要な拡張機能をすべてインストールします。インストールされた拡張機能を、インストール場所(WindowsはC:\Users\<username>\.vscode\extensions
)からターゲットマシンの同じ場所にコピーします。
完璧に動作します。