VSCode 확장을 오프라인으로 설치하는 방법은 무엇입니까?
인터넷에 연결되어 있지 않거나 연결할 수없는 컴퓨터에 VS Code를 설치했습니다. docs에 따르면 , 명령 줄에서 확장 프로그램을 설치할 수 .vsix
있지만 .vsix
마켓 플레이스에서 얻는 방법을 모르겠습니다 .
마켓 플레이스에서.vsix
호스팅되는 확장 프로그램을 다운로드하려면 어떻게 해야합니까?
2017-12-13 업데이트
이제 확장 프로그램을 마켓 플레이스 에서 직접 다운로드 할 수 있습니다 .
VSCode 1.7.1부터 확장을 드래그하거나 여는 것이 더 이상 작동하지 않습니다. 수동으로 설치하려면 다음을 수행해야합니다.
- 확장 사이드 바를 엽니 다
- 오른쪽 상단에서 줄임표를 클릭하십시오
- VSIX에서 설치를 선택하십시오.
오래된 방법
According to the documentation it is possible to download an extension directly:
An extension's direct download URL is in the form:
https://${publisher}.gallery.vsassets.io/_apis/public/gallery/publisher/${publisher}/extension/${extension name}/${version}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage
This means that in order to download the extension you need to know
- the publisher name
- the version
- the extension name
You can find all this information in the url.
Example
Here's an example for downloading an installing the C# v1.3.0
extension:
Publisher, Extension and Version
You can find the publisher and the extension names on the extension's homepage inside its url:
https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp
Here the publisher is ms-vscode
and the extension name is csharp
.
The version can be found on the right side in the More Info area.
To download it you need to create a link from the template above:
All packages will have the same name Microsoft.VisualStudio.Services.VSIXPackage so you'll need to rename it after downloading if you want to know what package it was later.
Installation
In order to install the extension
- Rename the file and give it the
*.vsix
extension - Open
VS Code
, go toFile > Open File...
orCtrl+O
and select the.vsix
file - If everything went fine you should see this message at the top of the window:
Extension was successfully installed. Restart to enable it.
adding on to t3chb0t's answer, not sure why the option to download is not visible, so created a patch for those who use GreaseMonkey/ TamperMonkey: you can find the gist code here
Or you can just paste the below lines in your browser console, and the link would magically appear:
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);
All these suggestions are great, but kind of painful to follow because executing the code to construct the URL or constructing that crazy URL by hand is kind of annoying...
So, I threw together a quick web app to make things easier. Just paste the URL of the extension you want and out comes out the download of your extension already properly named: publisher-extension-version.vsix.
Hope someone finds it helpful: http://vscode-offline.herokuapp.com/
As of today the download URL for the latest version of the extension is embedded verbatim in the source of the page on Marketplace, e.g. source at URL:
https://marketplace.visualstudio.com/items?itemName=lukasz-wronski.ftp-sync
contains string:
https://lukasz-wronski.gallerycdn.vsassets.io/extensions/lukasz-wronski/ftp-sync/0.3.3/1492669004156/Microsoft.VisualStudio.Services.VSIXPackage
I use following Python regexp to extract dl URL:
urlre = re.search(r'source.+(http.+Microsoft\.VisualStudio\.Services\.VSIXPackage)', content)
if urlre:
return urlre.group(1)
I wanted to throw a PowerShell download option on the pile in case anyone else comes across this. I have several offline scenarios and I run this in a loop to download and update all of the extensions I use 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"
Adding to t3chb0t's excellent answer - Use these PowerShell commands to install all VSCode extensions in a folder:
cd C:\PathToFolderWithManyDownloadedExtensionFiles
Get-ChildItem . -Filter *.vsix | ForEach-Object { code --install-extension $_.FullName }
Then, reload VSCode to complete the installation.
Now you can download an extension directly in the "Resources" section, there's a "Download extension" link, I hope this information is still useful.
For Python users the pattern to use with t3chbot's excellent answer looks like:
https://marketplace.visualstudio.com/_apis/public/gallery/publishers/ms-python/vsextensions/python/{version_number}/vspackage
be sure to scroll right to see where you have to enter the version number.
If you are looking for a scripted solution:
- Get binary download URL: you can use an API, but be warned that there is no documentation for it. This API can return an URL to download
.vsix
files (see example below) - Download the binary
- Carefully
unzip
the binary into~/.vscode/extensions/
: you need to modify unzipped directory name, remove one file and move/rename another one.
For API start by looking at following example, and for hints how to modify request head to 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,
}
Explanations to the above example:
"filterType": 8
-FilterType.Target
more FilterTypes"filterType": 7
-FilterType.ExtensionName
more FilterTypes"flags": 514
-0x2 | 0x200
-Flags.IncludeFiles | Flags.IncludeLatestVersionOnly
- more Flags- to get flag decimal value you can run
python -c "print(0x2|0x200)"
- to get flag decimal value you can run
"assetTypes": ["Microsoft.VisualStudio.Services.VSIXPackage"]
- to get only link to.vsix
file more AssetTypes
If you have a specific (legacy) version of VSCode on your offline instance, pulling the latest extensions might not properly integrate.
To make sure that VSCode and the extensions work together, they must all be installed together on the online machine. This resolves any dependencies (with specific versions), and ensures the exact configuration of the offline instance.
Quick steps:
Install the VSCode version, turn off updating, and install the extensions. Copy the extensions from the installed location and place them on the target machine.
Detailed steps:
온라인 컴퓨터에 정확한 VSCode 버전을 설치하십시오. 그런 다음로 이동하여 업데이트를 끄십시오 File -> Preferences -> Settings
. 에서 Settings
창 아래 User Settings -> Application
로 이동 Update
섹션과의 매개 변수를 변경 Channel
하는 none
. 이렇게하면 VSCode가 인터넷에 연결되지 않고 최신 버전으로 자동 업데이트되지 않습니다.
그런 다음 VSCode 확장 섹션으로 이동하여 원하는 확장을 모두 설치하십시오. 설치된 확장명을 설치 위치 (Windows의 경우 C:\Users\<username>\.vscode\extensions
)에서 대상 시스템의 동일한 위치로 복사하십시오 .
완벽하게 작동합니다.
참고 URL : https://stackoverflow.com/questions/37071388/how-to-install-vscode-extensions-offline
'development' 카테고리의 다른 글
MySQL 저장 프로 시저를 어떻게 디버깅합니까? (0) | 2020.07.22 |
---|---|
tsconfig.json에서 경로를 사용하는 방법은 무엇입니까? (0) | 2020.07.22 |
사용자 지정 ASP.NET MVC 404 오류 페이지에 대한 라우팅 (0) | 2020.07.22 |
업로드 및 다운로드를 테스트 할 공용 FTP 서버가 있습니까? (0) | 2020.07.22 |
스프링 MVC @ PathVariable (0) | 2020.07.22 |