🚀 在 VS Code 中

遠端開發常見問題

本文涵蓋了 Visual Studio Code 遠端開發擴充功能的常見問題。如需更多關於設定和使用各項功能的詳細資訊,請參閱 SSHContainersWSL 文章。或嘗試入門教學課程,以協助您快速在遠端環境中執行。

如需關於 GitHub Codespaces 的問題,請參閱 GitHub Codespaces 文件

一般

什麼是 Visual Studio Code 遠端開發?

Visual Studio Code 遠端開發擴充功能套件可讓您在容器、遠端機器 (透過 SSH) 或 Windows Linux 子系統中開啟任何資料夾,並充分利用 VS Code 的完整功能集。這表示無論您的程式碼位於何處或託管在何處,VS Code 都能提供本機品質的開發體驗 — 包括完整的 IntelliSense (完成)、偵錯等等。

相較於本機編輯,VS Code 遠端開發提供哪些優勢?

遠端開發的一些優點包括

  • 能夠在與本機執行不同的作業系統上編輯、建置或偵錯。
  • 能夠在與目標部署環境相符的環境中開發。
  • 使用比本機機器更大或更專業的硬體進行開發。
  • 能夠編輯儲存在其他位置 (例如雲端或客戶網站) 的程式碼。
  • 分隔開發人員環境以避免衝突、提高安全性並加快入門速度。

相較於使用網路共用或同步檔案,VS Code 遠端開發提供顯著更佳的效能,同時更好地控制您的開發環境和工具。

遠端開發擴充功能與 GitHub Codespaces 有何關聯?

GitHub Codespaces 是一項服務,提供從 VS Code 和新的瀏覽器型編輯器存取的受管理雲端託管開發環境。這項服務也允許 VS Code 和瀏覽器型編輯器存取自我託管環境 (桌面或伺服器),而無需 SSH 伺服器,甚至無需直接網路路由。您可以在 GitHub Codespaces 文件中閱讀更多資訊。

雖然遠端開發和 Codespaces 擴充功能共用技術和功能,但遠端開發擴充功能是個別發行的,並且可以獨立於 GitHub Codespaces 運作。

遠端開發擴充功能如何運作?

Visual Studio Code 遠端開發允許您的本機 VS Code 安裝以透明方式與其他機器 (無論是虛擬或實體) 上的原始碼和執行階段環境互動,方法是將某些命令的執行移至「遠端伺服器」。當您連線到遠端端點時,VS Code Server 會由 VS Code 快速安裝,並且可以託管直接與遠端工作區、機器和檔案系統互動的擴充功能。

Architecture summary

如需關於擴充功能的其他詳細資訊,請參閱支援遠端開發

遠端開發擴充功能如何保護對遠端機器、VM 或容器的存取?

Visual Studio Code 遠端開發使用現有的、廣為人知的傳輸方式,例如 安全 Shell,以驗證和保護流量安全。除了這些廣為人知、安全的傳輸方式使用的連接埠之外,無需公開開啟任何連接埠。

注入的 VS Code Server 以您用來登入機器的相同使用者身分執行,確保 VS Code 及其擴充功能在未經許可的情況下不會獲得不當的提升存取權限。伺服器由 VS Code 啟動和停止,並且未連線到任何使用者或全域登入或啟動指令碼。VS Code 管理伺服器的生命週期,因此您無需擔心伺服器是否正在執行。

VS Code Server 可以自行安裝或使用嗎?

否。VS Code Server 是遠端開發擴充功能的組件,由 VS Code 用戶端管理。它會在 VS Code 連線到端點時自動安裝和更新,如果單獨安裝,可能會很快過時。它並非旨在或 授權供其他用戶端使用。

VS Code Server 的連線需求為何?

安裝 VS Code Server 需要您的本機機器具有對外 HTTPS (連接埠 443) 連線能力,才能連線到

  • update.code.visualstudio.com
  • *.vo.msecnd.net (Azure CDN)

根據預設,「遠端 - SSH」會嘗試在遠端主機上下載,並在建立連線後,回退到在本機下載 VS Code Server 並遠端傳輸。您可以使用 remote.SSH.localServerDownload 設定來變更此行為,以始終在本機下載然後傳輸,或永不在本機下載。

開發容器擴充功能始終在本機下載並傳輸到容器中。

您可以使用 擴充功能:從 VSIX 安裝... 命令手動安裝擴充功能,而無需網際網路連線,但如果您使用擴充功能面板或 devcontainer.json 安裝擴充功能,您的本機機器和 VS Code Server 將需要對外 HTTPS (連接埠 443) 存取權限才能連線到

  • marketplace.visualstudio.com
  • vscode.blob.core.windows.net
  • *.vo.msecnd.net (Azure CDN)
  • *.gallerycdn.vsassets.io (Azure CDN)

最後,某些擴充功能 (例如 C#) 從 download.microsoft.comdownload.visualstudio.microsoft.com 下載次要相依性。其他擴充功能 (例如 Visual Studio Live Share) 可能有其他連線需求。如果您遇到問題,請查閱擴充功能的文件以取得詳細資訊。

伺服器與 VS Code 用戶端之間的所有其他通訊都是透過以下傳輸通道完成的,具體取決於擴充功能

  • SSH:經過驗證的安全 SSH 通道。
  • 容器:Docker 的已設定通訊通道 (透過 docker exec)。
  • WSL:隨機本機連接埠。

您可以在網路連線文章中找到 VS Code 本身需要存取的位置清單。

為什麼在使用遠端擴充功能時,我在 Docker 擴充功能中看不到我的本機容器?

根據預設,Docker 擴充功能將遠端執行。雖然在某些情況下這是合理的預設值,但這表示當 VS Code 連線到遠端 SSH 主機、容器或 WSL 時,擴充功能可能不會顯示本機容器。

您可以使用以下解決方案之一來解決此問題

主機上需要安裝哪些 Linux 套件或程式庫才能使用遠端開發?

遠端開發需要核心 >= 4.18、glibc >= 2.28 和 libstdc++ >= 3.4.25。最新的 x86_64 glibc 型發行版具有最佳支援,但確切需求可能因發行版而異。

Dev Containers 和 WSL 擴充功能支援以 musl 為基礎的 Alpine Linux,而「遠端 - SSH」中提供 ARMv7l (AArch32) / ARMv8l (AArch64)。但是,某些擴充功能中的原生相依性可能會導致它們無法在非 x86_64 glibc 發行版上運作。請注意,實驗性 ARMv8l (AArch64) 僅在 VS Code Insiders 中提供。

如需其他詳細資訊,請參閱使用 Linux 進行遠端開發

我可以在較舊的 Linux 發行版上執行 VS Code Server 嗎?

從 VS Code 1.86.1 版 (2024 年 1 月) 開始,遠端伺服器的建置工具鏈的最低需求已提高。VS Code 發行的預先建置伺服器與以 glibc 2.28 或更高版本為基礎的 Linux 發行版相容,例如 Debian 10、RHEL 8 或 Ubuntu 20.04。VS Code 仍允許使用者連線到 VS Code 不支援的作業系統 (未提供 glibc >= 2.28 和 libstdc++ >= 3.4.25 的作業系統),直到 2025 年 2 月。這讓您和您的公司有時間遷移到較新的 Linux 發行版。當您連線到 VS Code 不支援的作業系統版本時,VS Code 將顯示對話方塊和橫幅訊息。

我可以安裝個別擴充功能而不是擴充功能套件嗎?

可以。遠端開發擴充功能套件提供了一種方便的方式,讓您可以存取所有最新的遠端功能,因為它們已發行。但是,您隨時可以從市集或 VS Code 擴充功能檢視安裝個別擴充功能。

如何檢閱和設定擴充功能設定?

Visual Studio Code 的其他部分一樣,您可以透過其設定自訂每個遠端開發擴充功能。以開發容器為例,您可以透過在擴充功能檢視中開啟擴充功能 (按 ⇧⌘X (Windows、Linux Ctrl+Shift+X)),然後導覽至 功能貢獻,來檢閱所有開發容器設定的清單

List of settings in Feature Contributions

WSL

相較於使用 WSL 作為終端機,此擴充功能有何優勢?

您可以將 WSL 視為在 Windows 上執行的 Linux 機器,您可以在其中安裝 Linux 特定架構/工具 (例如 Python、Go、Rust 等),而不會影響您的 Windows 設定。然後,您可以使用 VS Code 和 WSL 擴充功能,在 WSL 中安裝的內容的環境中進行開發,與 Windows 上安裝的內容隔離。

例如,您可能會在 WSL 中安裝 Go 堆疊 (編譯器、偵錯工具、程式碼檢查器等)。如果您僅在 Windows 上執行 VS Code,您也必須在該處安裝相同的 Go 堆疊,才能取得智慧完成、偵錯、跳到定義導覽等功能。而且由於語言服務是在 Windows 上執行,因此它們不知道 WSL 中的內容。

確實,您可以從 Windows 在 WSL 中執行二進位檔,反之亦然,但一般 VS Code 擴充功能不知道如何執行此操作。這就是我們開始支援在 WSL 中進行偵錯的方式,但很快意識到我們必須更新所有擴充功能才能了解 WSL。

我們決定改為讓 VS Code 的部分在 WSL 中執行,並讓在 Windows 上執行的 UI 與在 WSL 中執行的 VS Code 伺服器通訊。這就是 WSL 擴充功能啟用的功能,透過它,Go 擴充功能與其餘 Go 工具 (編譯器、偵錯工具、程式碼檢查器) 一起在 WSL 中執行,而 VS Code 在 Windows 上執行。

透過此方法,智慧完成等語言功能可針對 WSL 中的內容正常運作,而無需在 Windows 上設定任何內容。您不必擔心路徑問題或在 Windows 上設定不同版本的開發堆疊。如果您要將應用程式部署到 Linux,您可以設定您的 WSL 執行個體,使其看起來像您的執行階段環境,同時仍然在 Windows 上獲得豐富的編輯體驗。

擴充功能作者

身為擴充功能作者,我需要做什麼?

VS Code 擴充功能 API 抽象化了本機/遠端詳細資訊,因此大多數擴充功能無需修改即可運作。但是,鑑於擴充功能可以使用它們想要的任何節點模組或執行階段,因此在某些情況下可能需要進行調整。我們建議您應測試您的擴充功能 (尤其是在容器中),以確保不需要更新。如需詳細資訊,請參閱支援遠端開發

當使用者遠端連線時,擴充功能可以存取本機資源或 API 嗎?

當 VS Code 連線到遠端環境時,擴充功能會分類為 UI工作區 擴充功能。UI 擴充功能在本機擴充功能主機中執行,可以貢獻 UI 或個人化功能 (例如佈景主題),並且可以存取本機檔案或 API。工作區擴充功能在具有工作區的遠端擴充功能主機中執行,並且可以完全存取原始碼、遠端檔案系統和遠端 API。雖然工作區擴充功能不專注於 UI 自訂,但它們也可以貢獻瀏覽器、檢視和其他 UI 元素。

當使用者安裝擴充功能時,VS Code 會嘗試推斷正確的位置,並根據其類型安裝它。不需要遠端執行的擴充功能 (例如佈景主題和其他 UI 自訂) 會自動安裝在 UI 端。所有其他擴充功能都會被視為工作區擴充功能,因為它們功能最完整。但是,擴充功能作者也可以使用 package.json 中的 extensionKind 屬性來覆寫此位置。

如果您的擴充功能未如預期般運作,有一些步驟可以檢查它是否在正確的位置執行,或者是否應該具有不同的 extensionKind。另請參閱支援遠端開發,以取得關於擴充功能作者需要了解的關於遠端開發和 Codespaces 的其他詳細資訊。

授權與隱私權

位置

您可以在此處找到 VS Code 遠端開發擴充功能的授權

為什麼遠端開發擴充功能或其組件不是開放原始碼?

Visual Studio Code 遠端開發擴充功能及其相關組件使用 開放規劃、問題和功能要求流程,但目前不是開放原始碼。擴充功能共用原始碼,該原始碼也用於完全受管理的遠端開發服務,例如 GitHub Codespaces 及其相關擴充功能。

如需更多資訊,請參閱Visual Studio Code 與 'Code - OSS' 差異Microsoft 擴充功能授權文章。

遠端開發擴充功能可以連線到哪些位置是否有任何限制?

您可以自由地將擴充功能用於個人或公司用途,以連線到您自己的實體機器、虛擬機器或容器。這些可以是內部部署、您自己的私有雲或資料中心、Azure 或其他雲端/非雲端託管提供者。您不能在擴充功能或其相關組件之上建置公開產品或服務 (請參閱下一個問題)。

我可以使用 VS Code 遠端開發擴充功能來建置我自己的產品或服務嗎?

您可以將擴充功能與您自己的內部或私人服務搭配使用。您不能在 VS Code 遠端開發擴充功能或其相關組件 (例如 VS Code Server) 之上建置公開或商業服務。您不能建立其他擴充或操作遠端開發擴充功能的擴充功能。雖然授權聲明您不得「將軟體作為獨立或整合產品提供,或將其與您的任何應用程式結合供他人使用」,但您可以記錄如何將擴充功能與您的服務結合使用。

我可以在我自己的公開服務產品中重新封裝或重複使用 VS Code Server 嗎?

否。授權聲明您不得「將軟體作為獨立或整合產品提供,或將其與您的任何應用程式結合供他人使用」,這表示您不得在 VS Code Server 之上建置公開產品或服務。

我對於是否可以使用擴充功能來執行 X 有疑問,我可以問誰?

請提交問題

GDPR 和 VS Code 遠端開發

VS Code 遠端開發擴充功能遵循 GDPR 政策,如同 Visual Studio Code 本身。如需更多詳細資訊,請參閱一般常見問題

問題或意見反應

有問題或意見反應嗎?