He instalado VS Code en una máquina que no está ni puede estar conectada a Internet. Según la documentación, puedo instalar una extensión desde la línea de comandos si tengo el archivo .vsix
, pero no sé cómo obtener el archivo .vsix
del mercado.
¿Cómo puedo descargar el archivo .vsix
para una extensión alojada en the marketplace?
Ahora puedes descargar la extensión directamente desde el marketplace.
A partir de VSCode 1.7.1 arrastrar o abrir la extensión ya no funciona. Para instalarla manualmente es necesario:
Según la documentación es posible descargar una extensión directamente:
La URL de descarga directa de una extensión tiene la forma:
https://${publisher}.gallery.vsassets.io/_apis/public/gallery/publisher/${publisher}/extension/${extension name}/${version}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage
Esto significa que para descargar la extensión necesita saber
Puede encontrar toda esta información en la url.
Este es un ejemplo de descarga e instalación de la extensión C# v1.3.0
:
Puede encontrar los nombres del editor y de la extensión en la página de inicio de la extensión dentro de su url:
https://marketplace.visualstudio.com/items?itemName=**ms-vscode**.**csharp**
Aquí el editor es ms-vscode
y el nombre de la extensión es csharp
.
La versión se encuentra a la derecha en el área Más información.
Para descargarlo necesita crear un enlace desde la plantilla anterior:
Todos los paquetes tendrán el mismo nombre Microsoft.VisualStudio.Services.VSIXPackage así que tendrás que renombrarlo después de descargarlo si quieres saber qué paquete era más tarde.
Para instalar la extensión
*.vsix
.VS Code
, vaya a File > Open File...
o Ctrl+O
y seleccione el archivo .vsix
.La extensión se ha instalado correctamente. Reinicie para habilitarla.
Además de la respuesta de t3chb0t's, no estoy seguro de por qué la opción de descarga no es visible, así que he creado un parche para aquellos que utilizan GreaseMonkey/ TamperMonkey: puedes encontrar el código gist aquí
O puede simplemente pegar las siguientes líneas en la consola de su navegador, y el enlace aparecerá mágicamente:
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);
Quería lanzar una opción de descarga de PowerShell en la pila en caso de que alguien más se encuentra con esto. Tengo varios escenarios fuera de línea y ejecutar esto en un bucle para descargar y actualizar todas las extensiones que utilizo sin conexión.
$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"