使用 VS Code 進行遠端開發
2019 年 5 月 2 日,作者:VS Code 團隊,@code
重點摘要
今天,我們很興奮地宣布推出三款適用於 Visual Studio Code 的全新擴充功能預覽版,這些擴充功能可在 容器、實體或虛擬機器的遠端環境,以及 適用於 Linux 的 Windows 子系統 (WSL) 中實現無縫開發。您可以立即開始使用,方法是安裝 遠端開發擴充功能套件。
注意:您現在需要使用 Insiders 組建版本,但遠端開發支援最終將在穩定版本中提供。
請繼續閱讀以了解我們是如何走到這一步的。
開發趨勢
隨著 VS Code 的普及,我們有幸與越來越多具有不同開發環境的使用者進行交流,他們的環境與我們自己的環境截然不同,目的是找出我們可以推動 VS Code 進步的方法,以解決開發人員實際的痛點。
在這些對話中,出現了一個有趣的模式。我們看到許多開發人員嘗試使用 VS Code 來針對容器和遠端 VM 進行開發,這些容器和遠端 VM 配置了特定的開發和執行階段堆疊,僅僅因為設定這些本機開發環境太困難、太具破壞性,在某些情況下甚至是不可能的。
我們都經歷過這個問題。除非我們覺得是時候清空機器了 :),否則我們不願意嘗試 Rust、Go、Node 或 Python3 等新堆疊,因為擔心「搞亂」我們目前良好調校的環境。
Python 開發人員想要切換到 VS Code,但卻無法切換,因為他們需要使用 容器和虛擬機器 作為針對特定 Python 堆疊配置的開發環境。
由於程式碼庫非常龐大,我們看到像 Facebook (和 Microsoft!) 這樣的公司工程師使用像 vim 這樣的編輯器,透過安全的強大「開發人員 VM」進行遠端工作,使用替代的雲端搜尋和導航服務,這些服務的規模甚至超出了最好的筆記型電腦所能處理的範圍。
建置和訓練資料模型的資料科學家通常需要大量的儲存和運算服務來分析大型資料集,這些資料集甚至無法儲存或處理在強大的桌上型電腦上。
適用於 Linux 的 Windows 子系統 (WSL) 的普及,部分原因在於它能夠輕鬆設定包含目標作業系統的獨立開發環境。事實上,VS Code 儲存庫中評論第三多的問題是支援從 Windows 上 Linux 發行版的 Bash 終端機執行 code
。
目前解決方案的挑戰
在這些對話中,我們也不斷聽到開發人員在使用這種類型的開發時面臨的相同挑戰。
-
遠端桌面可以運作,但在某些 Linux 發行版上很難或不可能設定,而且開發體驗可能會「延遲」。
-
SSH 和 Vim (或具有檔案同步功能的本機工具) 可以運作,但它們可能速度慢、容易出錯,而且通常缺乏現代開發工具的生產力。
-
基於瀏覽器的工具在各種情況下都很有用,但開發人員不想放棄桌上型工具提供的豐富性和熟悉度,也不想放棄他們現有的本機安裝工具鏈。
更糟糕的是 (我們認為!) 開發人員為了針對這些環境工作,不得不犧牲核心 VS Code 體驗,例如 IntelliSense (完成)、程式碼檢查和偵錯。
不同的方法
在聽到這些挑戰後,我們開始研究 WSL 支援,它看起來很簡單。安裝 VS Code 並 (當時要小心!) 像平常一樣編輯 Windows 檔案系統。我們確實努力為 Node.js 啟用遠端偵錯,而且我們認為我們可以簡單地安裝一個小型腳本,以允許從 bash shell 啟動 code
。
但是,這就是不對勁。為每個執行階段做特殊工作是沒有意義的,就像我們為 Node.js 偵錯所做的那樣。如果您在 Windows 上安裝了 Python 2.7 和 Flask (或根本沒有安裝!),而在 Linux 發行版中安裝了 Python 3.7 和 Django,您將無法獲得適當的完成或程式碼檢查,因為 VS Code 正在查看 Windows 版本的所有內容。必須在 Windows 和 Linux 上複製開發環境,這完全失去了使用 WSL 的目的。
我們確信我們需要的是一種同時在兩個位置執行 VS Code 的方法,在本機執行開發人員工具,並連線到一組在實體或虛擬機器 (例如,容器或 VM) 的環境中遠端執行的開發服務。這讓您在遠端環境的上下文中獲得豐富的本機開發體驗。
介紹 VS Code 遠端擴充功能
在過去的幾個月裡,我們一直努力重新建立程式碼層之間的適當界線,並消除對本機開發環境的假設。我們建置了三個新的擴充功能,用於處理在 WSL、Docker 容器或透過 SSH 在實體和虛擬機器中執行的遠端工作區。
WSL 擴充功能可讓您直接從 VS Code 使用 適用於 Linux 的 Windows 子系統 (WSL) 作為完整的開發環境。這種新的最佳化支援可讓您:
- 使用 Windows 在以 Linux 為基礎的環境中進行開發,使用特定於平台的工具鏈和公用程式。
- 編輯位於 WSL 或已掛載的 Windows 檔案系統 (例如
/mnt/c
) 中的檔案。 - 在 Windows 上執行和偵錯以 Linux 為基礎的應用程式。
命令和擴充功能直接在 Linux 發行版中執行,因此您不必擔心路徑問題、二進位相容性或其他跨作業系統的挑戰。您可以在 WSL 中使用 VS Code,就像您從 Windows 中使用一樣。
觀看這段 2 分鐘的快速影片,了解在 WSL 中開發有多麼容易。
如需更多資訊,請參閱 在 WSL 中開發 文件。
Remote - SSH 擴充功能可讓您開啟託管在任何執行 SSH 伺服器的遠端機器、VM 或容器上的資料夾或工作區。透過 SSH 進行開發可讓您:
- 在比本機電腦更大、更快或更專業的硬體上進行開發。
- 快速在不同的遠端開發環境之間切換,並安全地進行更新,而無需擔心影響您的本機電腦。
- 偵錯在其他地方執行的應用程式,例如客戶網站或雲端。
例如,假設您正在處理一個深度學習專案。您通常需要一個 GPU 密集型虛擬機器 (例如 Azure Data Science Virtual Machine),其中配置了所有必要的工具和框架,以便您可以使用大規模資料集來訓練模型。
您可以使用透過 SSH 的 Vim 或 Jupyter Notebooks 來編輯您的遠端程式碼,但您會放棄本機開發工具的豐富性。相反地,使用 Remote - SSH 擴充功能,您只需連線到 VM,安裝必要的擴充功能,例如 Python,然後您就可以利用 VS Code 的所有強大功能,例如 IntelliSense (完成)、程式碼導航和偵錯,就像您在本機工作一樣。
觀看這段 2 分鐘的快速影片,了解在透過 SSH 的虛擬機器上開發有多麼容易。
如需更多資訊,請參閱 使用 SSH 進行開發 文件。
開發容器擴充功能可讓您使用 Docker 容器 作為您的 開發容器。容器是絕佳的開發環境,因為:
- 您可以使用一致且易於重現的工具鏈進行開發,並在您部署到的相同作業系統上進行開發。
- 容器是隔離的,這表示您可以快速在不同的開發環境之間切換,而不會影響您的本機電腦。
- 其他人可以輕鬆地為您的專案做出貢獻,因為他們可以輕鬆地在一致的開發環境中進行開發、建置和測試。
可以使用 devcontainer.json
檔案來告訴 VS Code 如何配置開發容器,包括要使用的 Dockerfile
、要開啟的連接埠以及要在容器中安裝的擴充功能。當 VS Code 在工作區中找到 devcontainer.json
時,它會自動建置 (如果需要) 映像、啟動容器並連線到它。您的檔案會掛載到容器中,因此您可以開啟檔案並開始編輯,並具有完整的 IntelliSense (完成)、程式碼導航、偵錯等功能。
觀看這段 2 分鐘的快速影片,了解開發容器的實際運作情況。
如需有關開發容器的更多資訊,請參閱 在容器內開發 文件,以及 vscode-remote-try-* 儲存庫,其中包含您今天可以使用的範例。
管理擴充功能
在遠端開發時,VS Code 將嘗試推斷擴充功能應安裝在本機還是遠端,這取決於它公開的功能。擴充功能分為兩類:
-
UI 擴充功能安裝在本機。這些擴充功能僅自訂 UI,而且無法存取工作區中的檔案,這表示它們可以完全在本機電腦上執行。由於它們安裝在本機,因此無論您在哪個工作區中工作,它們始終可供您使用。UI 擴充功能的範例包括佈景主題、程式碼片段、語言文法和鍵盤對應。
-
工作區擴充功能安裝在遠端。它們存取工作區中的檔案和資料夾以進行編輯,以提供 IntelliSense (完成)、前往定義、偵錯等功能。這些擴充功能可能會自訂 UI。這些擴充功能在遠端執行,以便它們可以完全存取遠端主機上的檔案系統和工具。
大多數擴充功能都已更新,並且在遠端環境中可以正常運作,但如果您遇到某些無法運作的擴充功能,請在擴充功能上提交問題。
擴充功能作者
如果您正在建立 VS Code 擴充功能,我們已實作新的擴充功能 API,這些 API 可感知遠端環境。例如,擴充功能作者應使用 vscode.env.openExternal
API,而不是使用 open
套件來載入瀏覽器視窗,這樣會在本地開啟瀏覽器。同樣地,還有一個新的 clipboard
類別,它會將內容放置在本地剪貼簿上,正如預期的那樣。
更多詳細資訊可以在更新後的 API 文件中找到,包括如何在遠端環境中執行、測試和偵錯您的擴充功能。
開始使用
感謝您耐心讀到這裡!
以下是開始進行 Visual Studio Code 遠端開發的 3 個快速步驟:
-
安裝 Insiders 組建版本。在遠端開發功能在穩定版中提供之前,您需要使用此組建版本。Insiders 組建版本每天都會發布最新的功能和錯誤修正。如果您擔心穩定性,請別擔心!我們使用 Insiders 組建版本來開發 VS Code,並且它可以與穩定版並排安裝,以防發生任何問題 (並告知我們)。
-
取得 遠端開發擴充功能套件,其中安裝了對 WSL、SSH 和容器的支援,這是開始使用最簡單的方法。如果您不需要全部功能,可以解除安裝個別的擴充功能。
-
閱讀文件。試試 開發容器範例。如果您使用 Python 進行開發 (你們很多人都這樣做!),請查看 Dan Taylor 關於在 Visual Studio Code 中進行遠端 Python 開發的部落格文章。
最後,如果您遇到問題,請提交問題。如需常見問題的解答,請參閱我們的常見問題。
請告訴我們您的想法!
祝您編碼愉快,
@code 團隊