Как установить расширения VSCode в автономном режиме?

Я установил код VS на компьютере, который не является и не может быть подключен к Интернету. В соответствии с документами, я могу установить расширение из командной строки, если у меня есть .vsix, но я не знаю, как получить .vsix от на рынке.

Как загрузить .vsix для расширения, размещенного на рынке?

Ответ 1

ОБНОВЛЕНИЕ 2017-12-13

Теперь вы можете скачать расширение прямо с торговой площадки.

enter image description here

Начиная с VSCode 1.7.1, перетаскивание или открытие расширения больше не работает. Чтобы установить его вручную, вам необходимо:

  • открыть боковую панель расширений
  • нажмите на многоточие в правом верхнем углу
  • выберите Установить из VSIX

Install from VSIX...


Старый метод

Согласно документации можно скачать расширение напрямую:

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

Здесь издатель - ms-vscode а расширение - csharp.

Версию можно найти справа в области " Дополнительная информация".

Чтобы скачать его вам нужно создать ссылку из шаблона выше:

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

Все пакеты будут иметь одинаковое имя Microsoft.VisualStudio.Services.VSIXPackage, поэтому вам нужно переименовать его после загрузки, если вы хотите узнать, какой пакет был позже.

Монтаж

Для того, чтобы установить расширение

  • Переименуйте файл и дайте ему расширение *.vsix
  • Откройте VS Code, перейдите в File > Open File... или Ctrl+O и выберите файл .vsix
  • Если все прошло хорошо, вы должны увидеть это сообщение в верхней части окна:

Расширение было успешно установлено. Перезапустите, чтобы включить его.

Ответ 2

добавление к t3chb0t ответа, не уверен, почему опция для загрузки не видна, поэтому создал патч для тех, кто использует GreaseMonkey/TamperMonkey: вы можете найти gist-код здесь

Или вы можете просто вставить нижние строки в консоли своего браузера, и ссылка будет волшебным образом выглядеть:

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

Ответ 3

Все эти предложения велики, но вроде больно следовать, потому что выполнение кода для создания URL-адреса или конструирования этого сумасшедшего URL-адреса вызывает раздражение...

Итак, я собрал быстрое веб-приложение, чтобы упростить работу. Просто вставьте URL-адрес требуемого расширения и выйдите из загрузки вашего расширения, которое уже правильно названо: publisher-extension-version.vsix.

Надеюсь, что кто-то сочтет это полезным: http://vscode-offline.herokuapp.com/

Ответ 4

На сегодняшний день URL загрузки для последней версии расширения встроен дословно в источник страницы Marketplace, например. источник по 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

Я использую regexp из Python для извлечения URL-адреса dl:

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

Ответ 5

Я хотел бросить опцию загрузки 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"

Ответ 6

Добавление к отличному ответу t3chb0t - используйте эти команды PowerShell для установки всех расширений VSCode в папку:

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

Затем перезагрузите VSCode для завершения установки.

Ответ 7

Теперь вы можете загрузить расширение непосредственно в разделе "Ресурсы", там есть ссылка "Загрузить расширение", я надеюсь, что эта информация по-прежнему полезна.

Ответ 8

Для пользователей Python шаблон для использования с отличным ответом t3chbot выглядит так:

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

не забудьте прокрутить вправо, чтобы увидеть, где вы должны ввести номер версии.

Ответ 9

Если вы ищете сценарий решения:

  1. Получить бинарный URL для загрузки: вы можете использовать API, но имейте в виду, что для него нет документации. Этот API может возвращать URL для загрузки файлов .vsix (см. Пример ниже)
  2. Скачать бинарный файл
  3. Аккуратно unzip двоичный файл в ~/.vscode/extensions/: вам нужно изменить разархивированное имя каталога, удалить один файл и переместить/переименовать другой.

Для 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 more FilterTypes
  • "filterType": 7 - FilterType.ExtensionName more FilterTypes
  • "flags": 514 - 0x2 | 0x200 0x2 | 0x200 - Flags.IncludeFiles | Flags.IncludeLatestVersionOnly Flags.IncludeFiles | Flags.IncludeLatestVersionOnly - больше флагов
    • чтобы получить десятичное значение флага, вы можете запустить python -c "print(0x2|0x200)"
  • "assetTypes": ["Microsoft.VisualStudio.Services.VSIXPackage"] - получить только ссылку на .vsix файл больше AssetTypes

Ответ 10

Если у вас есть конкретная (устаревшая) версия VSCode в автономном экземпляре, получение последних расширений может неправильно интегрироваться.

Чтобы убедиться, что VSCode и расширения работают вместе, все они должны быть установлены вместе на онлайн-машине. Это разрешает любые зависимости (с конкретными версиями) и обеспечивает точную настройку автономного экземпляра.

Быстрые шаги:

Установите версию VSCode, отключите обновление и установите расширения. Скопируйте расширения из установленного местоположения и поместите их на целевой компьютер.

Подробные шаги:

Установите точную версию VSCode на онлайн-машине. Затем отключите обновления, перейдя к File -> Preferences -> Settings. В окне Settings в разделе User Settings -> Application перейдите в раздел Update и измените параметр для Channel на none. Это предотвращает доступ VSCode к Интернету и автоматическое обновление ваших версий до последних.

Затем перейдите в раздел расширений VSCode и установите все нужные расширения. Скопируйте установленные расширения из места их установки (с окнами его C:\Users\<username>\.vscode\extensions) в то же место на целевом компьютере.

Работает отлично.