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 FileApri 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.