Come posso installare le estensioni di codice di Visual Studio offline?


Risposte:


202

AGGIORNAMENTO 2017-12-13

Ora puoi scaricare l'estensione direttamente dal marketplace .

Inserisci qui la descrizione dell'immagine

A partire da Visual Studio Code 1.7.1 il trascinamento o l'apertura dell'estensione non funziona più. Per installarlo manualmente è necessario:

  • apri la barra laterale delle estensioni
  • fare clic sui puntini di sospensione nell'angolo in alto a destra
  • scegliere Installa da VSIX

Installa da VSIX ...


Vecchio metodo

Secondo la documentazione è possibile scaricare direttamente un'estensione:

L'URL per il download diretto di un'estensione è nel formato:

https://${publisher}.gallery.vsassets.io/_apis/public/gallery/publisher/${publisher}/extension/${extension name}/${version}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage

Questo significa che per scaricare l'estensione devi sapere

  • il nome dell'editore
  • la versione
  • il nome dell'estensione

Puoi trovare tutte queste informazioni nell'URL.

Esempio

Ecco un esempio per il download di un'installazione dell'estensione C # v1.3.0 :

Editore, estensione e versione

Puoi trovare l'editore e i nomi delle estensioni sulla home page dell'estensione all'interno del suo URL:

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

Qui l'editore è ms-vscodee il nome dell'estensione è csharp.

La versione è disponibile sul lato destro nell'area Ulteriori informazioni .

Per scaricarlo devi creare un link dal modello sopra:

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

Tutti i pacchetti avranno lo stesso nome Microsoft.VisualStudio.Services.VSIXPackage , quindi dovrai rinominarlo dopo il download se vuoi sapere quale pacchetto era in seguito.

Installazione

Per installare l'estensione

  • Rinomina il file e assegnagli l' *.vsixestensione
  • Apri Visual Studio Code, vai al menu File → Apri file ... o Ctrl+ Oe seleziona il .vsixfile
  • Se tutto è andato bene, dovresti vedere questo messaggio nella parte superiore della finestra:

L'estensione è stata installata correttamente. Riavvia per abilitarlo.


10
Ho creato un bookmarklet da utilizzare nella pagina delle estensioni. Vediamo per quanto tempo funziona !: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";})()
— TheQuickBrownFox

Il passaggio di installazione non ha funzionato per me, nel VS Code 1.7.1 (ottobre 2016).
— Roy Dictus,

@RoyDictus, VSCode mostra il collegamento alle estensioni invece di installarlo: - | devono aver cambiato qualcosa.
— t3chb0t,

@RoyDictus vedi l'aggiornamento - questo dovrebbe funzionare per te. Allegherò schermate un'altra volta.
— t3chb0t,

2
Questa risposta ha buone informazioni; tuttavia, C # è un cattivo esempio, soprattutto perché la domanda afferma "una macchina che non è, e non può essere, connessa a Internet" . L'estensione C # non può essere installata offline come descritto qui perché prova a scaricare i componenti specifici della piattaforma dopo l'attivazione e deve invece essere creato un pacchetto offline specifico .
— Herohtar,

19

aggiungendo alla risposta di t3chb0t, non so perché l'opzione per il download non è visibile, così creato una patch per chi usa GreaseMonkey / TamperMonkey: è possibile trovare il codice Gist qui

Oppure puoi semplicemente incollare le righe sottostanti nella tua console del browser e il link apparirà magicamente:

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);

Bello ma ridondante poiché VSCode ora fornisce il link sul loro sito Web
— Blowsie

1
@Blowsie non costantemente, su Windows vedo il link, su Linux non lo so
— kbolino

15

Tutti questi suggerimenti sono fantastici, ma un po 'dolorosi da seguire perché eseguire il codice per costruire l'URL o costruire quell'URL pazzo a mano è un po' fastidioso ...

Quindi, ho messo insieme una rapida app Web per semplificare le cose. Basta incollare l'URL dell'estensione desiderata ed esce il download dell'estensione già correttamente denominata: publisher-extension-version.vsix.

Spero che qualcuno lo trovi utile: http://vscode-offline.herokuapp.com/


Bello ma ridondante poiché VSCode ora fornisce il link sul loro sito Web
— Blowsie il

Corretta. È un'aggiunta molto recente da parte loro. Probabilmente prenderò il mio servizio nel prossimo futuro.
— Yaakov Chaikin il

@YaakovChaikin il link non viene sempre visualizzato, ma il tuo servizio funziona in modo coerente
— kbolino

Questo è fico. Sfortunatamente quando altri hanno fatto cose simili sulle pagine di GitHub invece di Heroku, gli utenti come ChrisF le hanno cancellate dicendo "non collegare al tuo GitHub". È triste quando i moderatori diventano bulli.
— iconoclasta,

4

Ad oggi l'URL di download per l' ultima versione dell'estensione è incorporato alla lettera nella fonte della pagina sul Marketplace, ad es. Fonte all'URL:

https://marketplace.visualstudio.com/items?itemName=lukasz-wronski.ftp-sync

contiene stringa:

https://lukasz-wronski.gallerycdn.vsassets.io/extensions/lukasz-wronski/ftp-sync/0.3.3/1492669004156/Microsoft.VisualStudio.Services.VSIXPackage

Uso il seguente regexp Python per estrarre l'URL dl:

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

3

Volevo lanciare un'opzione di download di PowerShell sulla pila nel caso in cui qualcuno dovesse imbattersi in questo. Ho diversi scenari offline e lo eseguo in un ciclo per scaricare e aggiornare tutte le estensioni che utilizzo offline.

$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"

2

Aggiunta alla risposta eccellente di t3chb0t: utilizzare questi comandi di PowerShell per installare tutte le estensioni VSCode in una cartella:

cd C:\PathToFolderWithManyDownloadedExtensionFiles
Get-ChildItem . -Filter *.vsix | ForEach-Object { code --install-extension $_.FullName }

Quindi, ricaricare VSCode per completare l'installazione.


1

Ora puoi scaricare un'estensione direttamente nella sezione "Risorse", c'è un link "Scarica estensione", spero che queste informazioni siano ancora utili.


1

Ho archiviato uno script nel mio senso per scaricare un'estensione dal marketplace usando uno script PowerShell. Sentiti libero di commentare per condividerlo.

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"
}

0

Per gli utenti di Python lo schema da utilizzare con l'eccellente risposta di t3chbot è il seguente:

https://marketplace.visualstudio.com/_apis/public/gallery/publishers/ms-python/vsextensions/python/{version_number}/vspackage

assicurati di scorrere verso destra per vedere dove devi inserire il numero di versione.


0

Se stai cercando una soluzione con script:

  1. Ottieni l'URL di download binario: puoi utilizzare un'API, ma tieni presente che non è disponibile alcuna documentazione. Questa API può restituire un URL per scaricare .vsixfile (vedi esempio di seguito)
  2. Scarica il binario
  3. Con attenzione unzipil binario in ~/.vscode/extensions/: è necessario modificare il nome della directory decompresso, rimuovere un file e spostare / rinominare un altro.

Per l'API inizia guardando l'esempio seguente e per suggerimenti su come modificare la richiesta vai 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,
}

Spiegazioni all'esempio sopra:

  • "filterType": 8- FilterType.Target più FilterTypes
  • "filterType": 7- FilterType.ExtensionName più FilterTypes
  • "flags": 514- 0x2 | 0x200- Flags.IncludeFiles | Flags.IncludeLatestVersionOnly- più bandiere
    • per ottenere il valore decimale del flag che puoi eseguire python -c "print(0x2|0x200)"
  • "assetTypes": ["Microsoft.VisualStudio.Services.VSIXPackage"]- per ottenere solo il collegamento al .vsixfile più AssetTypes

0

Se hai una versione specifica (legacy) di VSCode sulla tua istanza offline, l'estrazione delle estensioni più recenti potrebbe non integrarsi correttamente.

Per assicurarsi che VSCode e le estensioni funzionino insieme, devono essere installati tutti insieme sulla macchina online. Ciò risolve eventuali dipendenze (con versioni specifiche) e garantisce l'esatta configurazione dell'istanza offline.

Passaggi rapidi:

Installa la versione VSCode, disattiva l'aggiornamento e installa le estensioni. Copia le estensioni dalla posizione installata e posizionale sul computer di destinazione.

Passaggi dettagliati:

Installa la versione esatta di VSCode sul computer online. Quindi disattivare gli aggiornamenti andando a File -> Preferences -> Settings. Nella Settingsfinestra, sotto User Settings -> Application, vai alla Updatesezione e modifica il parametro per Channela none. Ciò impedisce a VSCode di raggiungere Internet e di aggiornare automaticamente le versioni più recenti.

Quindi vai alla sezione estensioni VSCode e installa tutte le estensioni desiderate. Copia le estensioni installate dal loro percorso di installazione (con Windows è C:\Users\<username>\.vscode\extensions) nella stessa posizione sul computer di destinazione.

Funziona perfettamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.