visual-studio-code - para - visual studio code extensions
¿Cómo instalar extensiones VSCode sin conexión? (10)
He instalado VS Code en una máquina que no está, y no puede estar, conectada a Internet.
Según los documentos
, puedo instalar una extensión desde la línea de comandos si tengo el
.vsix
, pero no sé cómo obtener el
.vsix
del mercado.
¿Cómo puedo descargar
.vsix
para una extensión alojada en
el mercado
?
ACTUALIZACIÓN 2017-12-13
Ahora puede 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 instalarlo manualmente necesita:
- abre la barra lateral de extensiones
- haga clic en los puntos suspensivos en la esquina superior derecha
- elija Instalar desde VSIX
Método antiguo
De acuerdo con la documentation , es posible descargar una extensión directamente:
La URL de descarga directa de una extensión tiene el formato:
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
- el nombre del editor
- la versión
- el nombre de la extensión
Puede encontrar toda esta información en la url.
Ejemplo
Aquí hay un ejemplo para descargar e instalar la extensión
C# v1.3.0
:
Editor, extensión y versión
Puede encontrar el editor y los nombres de las extensiones 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 puede encontrar en el lado derecho en el área Más información .
Para descargarlo, debe crear un enlace desde la plantilla anterior:
Todos los paquetes tendrán el mismo nombre Microsoft.VisualStudio.Services.VSIXPackage, por lo que deberá cambiarle el nombre después de la descarga si desea saber qué paquete era más tarde.
Instalación
Para instalar la extensión
-
Cambie el nombre del archivo y dele la extensión
*.vsix
-
Abra
VS Code
, vaya aFile > Open File...
oCtrl+O
y seleccione el archivo.vsix
- Si todo salió bien, debería ver este mensaje en la parte superior de la ventana:
La extensión se instaló correctamente. Reinicie para habilitarlo.
A partir de hoy, la URL de descarga para la última versión de la extensión está incrustada literalmente en la fuente de la página en Marketplace, por ejemplo, en la URL:
https://marketplace.visualstudio.com/items?itemName=lukasz-wronski.ftp-sync
contiene cadena:
https://lukasz-wronski.gallerycdn.vsassets.io/extensions/lukasz-wronski/ftp-sync/0.3.3/1492669004156/Microsoft.VisualStudio.Services.VSIXPackage
Utilizo la siguiente expresión regular de Python para extraer la URL dl:
urlre = re.search(r''source.+(http.+Microsoft/.VisualStudio/.Services/.VSIXPackage)'', content)
if urlre:
return urlre.group(1)
Agregando a la excelente respuesta de t3chb0t: use estos comandos de PowerShell para instalar todas las extensiones VSCode en una carpeta:
cd C:/PathToFolderWithManyDownloadedExtensionFiles
Get-ChildItem . -Filter *.vsix | ForEach-Object { code --install-extension $_.FullName }
Luego, vuelva a cargar VSCode para completar la instalación.
Ahora puede descargar una extensión directamente en la sección "Recursos", hay un enlace "Descargar extensión", espero que esta información siga siendo útil.
Para los usuarios de Python, el patrón a utilizar con la excelente respuesta de t3chbot es el siguiente:
https://marketplace.visualstudio.com/_apis/public/gallery/publishers/ms-python/vsextensions/python/{version_number}/vspackage
asegúrese de desplazarse hacia la derecha para ver dónde debe ingresar el número de versión.
Quería lanzar una opción de descarga de PowerShell en la pila en caso de que alguien más se encuentre con esto. Tengo varios escenarios sin conexión y ejecuto esto en un bucle para descargar y actualizar todas las extensiones que uso 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"
Si está buscando una solución con script:
-
Obtener URL de descarga binaria: puede usar una API, pero tenga en cuenta que no hay documentación para ello.
Esta API puede devolver una URL para descargar archivos
.vsix
(ver ejemplo a continuación) - Descargar el binario
-
Descomprima cuidadosamente el binario en
~/.vscode/extensions/
: necesita modificar el nombre del directorio descomprimido, eliminar un archivo y mover / cambiar el nombre de otro.
Para comenzar con la API, consulte el siguiente ejemplo y para obtener sugerencias sobre cómo modificar la solicitud, diríjase a 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,
}
Explicaciones al ejemplo anterior:
-
"filterType": 8
-FilterType.Target
más FilterTypes -
"filterType": 7
-FilterType.ExtensionName
más FilterTypes -
"flags": 514
-0x2 | 0x200
0x2 | 0x200
-Flags.IncludeFiles | Flags.IncludeLatestVersionOnly
Flags.IncludeFiles | Flags.IncludeLatestVersionOnly
- más Banderas-
para obtener el valor decimal de la bandera, puede ejecutar
python -c "print(0x2|0x200)"
-
para obtener el valor decimal de la bandera, puede ejecutar
-
"assetTypes": ["Microsoft.VisualStudio.Services.VSIXPackage"]
- para obtener solo un enlace al archivo .vsix más AssetTypes
Si tiene una versión específica (heredada) de VSCode en su instancia fuera de línea, puede que las extensiones más recientes no se integren correctamente.
Para asegurarse de que VSCode y las extensiones funcionen juntas, todas deben instalarse juntas en la máquina en línea. Esto resuelve cualquier dependencia (con versiones específicas) y asegura la configuración exacta de la instancia fuera de línea.
Pasos rápidos:
Instale la versión VSCode, desactive la actualización e instale las extensiones. Copie las extensiones de la ubicación instalada y colóquelas en la máquina de destino.
Pasos detallados:
Instale la versión exacta de VSCode en la máquina en línea.
Luego apague las actualizaciones yendo a
File -> Preferences -> Settings
.
En la ventana
Settings
, en
User Settings -> Application
, vaya a la sección
Update
y cambie el parámetro para
Channel
a
none
.
Esto evita que VSCode llegue a Internet y actualice automáticamente sus versiones a la última.
Luego vaya a la sección Extensiones VSCode e instale todas las extensiones deseadas.
Copie las extensiones instaladas desde su ubicación de instalación (con Windows su
C:/Users/<username>/.vscode/extensions
) a la misma ubicación en la máquina de destino.
Funciona perfectamente.
Todas estas sugerencias son geniales, pero un poco dolorosas de seguir porque ejecutar el código para construir la URL o construir esa URL loca a mano es un poco molesto ...
Entonces, creé una aplicación web rápida para facilitar las cosas. Simplemente pegue la URL de la extensión que desea y sale la descarga de su extensión que ya se llama correctamente: publisher-extension-version.vsix.
Espero que alguien lo encuentre útil: http://vscode-offline.herokuapp.com/
agregando a la respuesta de t3chb0t, no estoy seguro de por qué la opción de descarga no es visible, por lo que creó un parche para aquellos que usan GreaseMonkey / TamperMonkey: puede encontrar el código esencial here
O simplemente puede 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);