【vscode】解决vscode无法安装远程服务器插件问题,显示正在安装

文章目录

现状分析

vscode无法远程安装扩展插件,显示正在安装
现象 :一直处于这个正在安装状态

原因

服务器没网或者其他各种原因;

采用VSIX离线安装

第一步:离线下载插件包

vscode的扩展下载市场下载需要的插件Extensions for Visual Studio family of products | Visual Studio Marketplace

现在没办法下载VSIX了;

找到一个脚本可以下载VSCode插件:
GitHub - mjmirza/Download-VSIX-From-Visual-Studio-Market-Place: This script allows you to download VS Code extensions as VSIX files directly from the Visual Studio Marketplace.

这个脚本代码在这粘贴出来:

js 复制代码
/***
#          Download VS Code extensions as VSIX
#          Author: Mirza Iqbal
***/
 
// *** SCRIPTS NOT TESTED After July 2024 *** //
 
/***
// First 
***/
!function() {
    (function() {
        const extensionData = {
            version: "",
            publisher: "",
            identifier: "",
            getDownloadUrl: function() {
                return `https://${this.identifier.split(".")[0]}.gallery.vsassets.io/_apis/public/gallery/publisher/${this.identifier.split(".")[0]}/extension/${this.identifier.split(".")[1]}/${this.version}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage`;
            },
            getFileName: function() {
                return `${this.identifier}_${this.version}.vsix`;
            },
            getDownloadButton: function() {
                const button = document.createElement("a");
                button.innerHTML = "Download VSIX";
                button.href = "javascript:void(0);";
                button.style.fontFamily = "wf_segoe-ui,Helvetica Neue,Helvetica,Arial,Verdana";
                button.style.display = "inline-block";
                button.style.padding = "2px 5px";
                button.style.background = "darkgreen";
                button.style.color = "white";
                button.style.fontWeight = "bold";
                button.style.margin = "2px 5px";
                button.setAttribute("data-url", this.getDownloadUrl());
                button.setAttribute("data-filename", this.getFileName());
 
                button.onclick = function(event) {
                    event.target.onclick = null;
                    event.target.innerHTML = "Downloading VSIX...";
                    const xhr = new XMLHttpRequest();
                    console.log(event.target.getAttribute("data-url"));
                    xhr.open("GET", event.target.getAttribute("data-url"), true);
                    xhr.responseType = "blob";
 
                    xhr.onprogress = function(event) {
                        if (event.lengthComputable) {
                            const progress = (event.loaded / event.total * 100).toFixed(0);
                            event.target.innerHTML = `Downloading VSIX... ${progress}%`;
                        }
                    };
 
                    xhr.onload = function() {
                        if (this.status === 200) {
                            const blob = this.response;
                            const link = document.createElement("a");
                            link.href = window.URL.createObjectURL(blob);
                            link.download = event.target.getAttribute("data-filename");
                            link.click();
                            event.target.href = link.href;
                            event.target.download = link.download;
                            event.target.innerHTML = "Download VSIX";
                        } else {
                            event.target.innerHTML = "Error. Please reload the page and try again.";
                            alert(`Error ${this.status} error receiving the document.`);
                        }
                    };
 
                    xhr.onerror = function() {
                        event.target.innerHTML = "Error. Please reload the page and try again.";
                        alert(`Error ${this.target.status} occurred while receiving the document.`);
                    };
 
                    xhr.send();
                };
 
                return button;
            }
        };
 
        const metadataMap = {
            Version: "version",
            Publisher: "publisher",
            "Unique Identifier": "identifier"
        };
 
        const metadataRows = document.querySelectorAll(".ux-table-metadata tr");
 
        for (let i = 0; i < metadataRows.length; i++) {
            const row = metadataRows[i];
            const cells = row.querySelectorAll("td");
            if (cells.length === 2) {
                const key = cells[0].innerText.trim();
                const value = cells[1].innerText.trim();
                if (metadataMap.hasOwnProperty(key)) {
                    extensionData[metadataMap[key]] = value;
                }
            }
        }
 
        // Handle the case where the element might not exist
        const moreInfoElement = document.querySelector(".vscode-moreinformation");
        if (moreInfoElement) {
            moreInfoElement.parentElement.appendChild(extensionData.getDownloadButton()).scrollIntoView();
        } else {
            console.error("Element with class 'vscode-moreinformation' not found.");
        }
    }
    )()
}();
 
 
/***
// 2nd 
***/
(function() {
    const URL_VSIX_PATTERN = 'https://marketplace.visualstudio.com/_apis/public/gallery/publishers/${publisher}/vsextensions/${extension}/${version}/vspackage';
    const itemName = new URL(window.location.href).searchParams.get('itemName');
    const [publisher, extension] = itemName.split('.');
    const version = document.querySelector('#versionHistoryTab tbody tr .version-history-container-column').textContent;
    const url = URL_VSIX_PATTERN.replace('${publisher}', publisher).replace('${extension}', extension).replace('${version}', version);
    window.open(url, '_blank');
 
})();

脚本使用

  1. 先进入VSCode的插件市场:Extensions for Visual Studio family of products | Visual Studio Marketplace
  2. 找到你感兴趣的插件,比如CMake Tools,然后按F12键出现右边的开发者窗口。
  3. 在右下角控制台粘贴前面准备的代码,按下回车,浏览器就会自动下载
第二步:把下载好的插件文件上传到远程服务器上
第三步:在windows下打开vscode,并链接远端,进行安装

进入vscode选择扩展,选择右上角三个点的选项,选择VSIX安装。然后找到thirdpart目录下对应的插件文件选择即可。


此时显示已经安装成功

相关推荐
河南博为智能科技有限公司19 小时前
动环监控终端-守护变电站安全运行的智能核心
运维·服务器·网络·物联网
YY&DS20 小时前
VSCode Remote SSH 远程 Linux 无法连接
vscode
Protein_zmm21 小时前
第一章 计算机网络和因特网(下)
服务器·计算机网络·php
dyxal21 小时前
非对称加密:彻底解决密钥分发难题的数字安全革命
服务器·网络·安全
q***9941 天前
IPV6公网暴露下的OPENWRT防火墙安全设置(只允许访问局域网中指定服务器指定端口其余拒绝)
服务器·安全·php
RisunJan1 天前
Linux命令-exportfs命令(管理NFS服务器上共享文件系统)
linux·运维·服务器
动感小麦兜1 天前
服务器搭建
linux·服务器·python
LSL666_1 天前
云服务器安装Tomcat
运维·服务器·tomcat
b***65321 天前
自己编译RustDesk,并将自建ID服务器和key信息写入客户端
运维·服务器
k***45991 天前
服务器无故nginx异常关闭之kauditd0 kswapd0挖矿病毒 CPU占用200% 内存耗尽
运维·服务器·nginx