在WSL中開發
在Visual Studio代碼遠程- WSL擴展允許您使用的Windows子系統爲Linux(WSL)來自VS代碼您的全職開發環境權。您可以在基於Linux的環境中進行開發,使用特定於Linux的工具鏈和實用程序,以及在Windows的舒適環境下運行和調試基於Linux的應用程序。
該擴展名直接在WSL中運行命令和其他擴展名,因此您可以編輯WSL或已安裝的Windows文件系統中的文件(例如/mnt/c
),而不必擔心路徑問題,二進制兼容性或其他跨OS挑戰。
這使得VS Code可以提供本地質量的開發體驗 -包括完整的IntelliSense(完成功能),代碼導航和調試- 不管代碼託管在何處。
入門
安裝
要開始使用,您需要:
-
安裝Windows Subsystem for Linux和首選的Linux發行版。
注意: WSL 1 對於某些類型的開發確實有一些已知的限制,並且WSL 2支持是試驗性的。另外,由於
glibc
擴展程序內部代碼的依賴性,安裝在Alpine Linux中的擴展程序可能無法工作。有關詳細信息,請參見“ 遠程開發和Linux”文章。 -
在Windows端(不在WSL中)安裝Visual Studio Code。
注意:在安裝過程中提示您選擇“其他任務”時,請確保選中“ 添加到路徑”選項,以便您可以使用以下
code
命令在WSL中輕鬆打開文件夾。 -
安裝遠程開發擴展包。
打開一個遠程文件夾或工作區
從WSL終端
使用VS Code在Linux的Windows子系統內部打開文件夾與從命令提示符或PowerShell打開Windows文件夾非常相似。
-
打開WSL終端窗口(使用開始菜單項或
wsl
在命令提示符/ PowerShell中鍵入)。 -
導航到您要在VS Code中打開的文件夾(包括但不限於Windows文件系統掛載,例如
/mnt/c
) -
鍵入
code .
在終端中。首次執行此操作時,您應該看到在WSL中運行所需的VS Code提取組件。這應該只需要一會兒,並且只需要一次。注意:如果此命令不起作用,則可能需要重新啓動終端,或者在安裝VS Code時未將其添加到路徑中。
-
片刻之後,將出現一個新的VS Code窗口,您將看到VS Code正在WSL中打開該文件夾的通知。
VS Code現在將繼續在WSL中進行自我配置,並讓您保持最新狀態。
-
完成後,您現在將在左下角看到WSL指示器,並且可以像平常一樣使用VS Code!
而已!您在此窗口中執行的所有VS Code操作都將在WSL環境中執行,從編輯和文件操作到調試,使用終端等更多操作。
從VS代碼
或者,您可以直接從VS Code打開“遠程WSL”窗口:
- 啓動VS Code。
- 按F1鍵,爲默認發行版選擇“ Remote-WSL:新窗口”,或爲特定發行版選擇“ 使用Distro的Remote-WSL:新窗口”。
- 使用文件菜單打開您的文件夾。
如果已經打開了文件夾,則還可以使用Remote-WSL:在WSL中重新打開命令。系統將提示您使用哪個發行版。
如果您在WSL窗口中並想在本地窗口中打開當前輸入,請使用Remote-WSL:在Windows中重新打開。
從WINDOWS命令提示符
要直接從Windows提示符下打開WSL窗口,請使用--remote
命令行參數:
code --remote wsl+<distro name> <path in WSL>
例如: code --remote wsl+Ubuntu /home/jim/projects/c
使用Git
如果在WSL和Windows中使用相同的存儲庫,請確保設置一致的行尾。有關詳細信息,請參見提示和技巧。
您還可以通過將WSL配置爲使用Windows Git憑據管理器來避免使用密碼。有關詳細信息,請參見提示和技巧。
管理擴展
VS Code在以下兩個位置之一運行擴展:在UI /客戶端本地或在WSL中。雖然會在本地安裝影響VS Code UI的擴展(例如主題和代碼片段),但大多數擴展將駐留在WSL內。
如果從擴展視圖安裝擴展,它將自動安裝在正確的位置。安裝後,您可以根據類別分組確定擴展的安裝位置。將有“ 本地-已安裝”類別和一個“ WSL”類別。
注意:如果您是擴展作者,並且擴展無法正常工作或安裝在錯誤的位置,請參閱支持遠程開發以獲取詳細信息。
實際上需要遠程運行的本地擴展將在“ 本地安裝”類別中顯示爲灰色並禁用。選擇安裝在您的遠程主機上安裝擴展。
您還可以通過以下方法將WLS中所有本地安裝的擴展安裝到WSL中:使用“ 本地-已安裝”標題欄右側的雲按鈕,選擇“ 在WSL中安裝本地擴展:[名稱]”。這將顯示一個下拉列表,您可以在其中選擇要在WSL實例中安裝的本地安裝擴展。
在WSL中打開終端
通過VS Code在WSL中打開終端很簡單。在WSL中打開文件夾後,您在VS Code中打開的任何終端窗口(Terminal> New Terminal)將自動在WSL中運行,而不是在本地運行。
您也可以在code
同一終端窗口中使用命令行來執行許多操作,例如在WSL中打開新文件或文件夾。鍵入code --help
以查看命令行中可用的選項。
在WSL中進行調試
在WSL中打開文件夾後,就可以像在本地運行應用程序時一樣的方式使用VS Code的調試器。例如,如果您在中選擇啓動配置launch.json
並開始調試(F5),則該應用程序將在遠程主機上啓動並將調試器附加到該主機上。
有關在中配置VS Code調試功能的詳細信息,請參見調試文檔.vscode/launch.json
。
WSL特定設置
在WSL中打開文件夾後,也會重複使用VS Code的本地用戶設置。雖然這可以使您的用戶體驗保持一致,但是您可能需要在本地計算機和WSL之間更改其中的某些設置。幸運的是,一旦連接到WSL,您還可以通過運行“ 偏好設置”來設置WSL特定的設置:從命令面板(F1)打開“遠程設置”命令,或者在“設置”編輯器中選擇“ 遠程”選項卡。每當您在WSL中打開文件夾時,這些設置將覆蓋您已有的任何本地設置。
高級:環境設置腳本
在WSL中啓動VS Code Remote時,不運行任何外殼啓動腳本。這樣做是爲了避免針對shell調整的啓動腳本出現問題。如果要運行其他命令或修改環境,可以在安裝腳本中完成~/.vscode-server/server-env-setup
(Insiders :)~/.vscode-server-insiders/server-env-setup
。如果存在,則在啓動服務器之前先處理腳本。
該腳本必須是有效的Bourne Shell腳本。請注意,無效的腳本將阻止服務器啓動。如果最後得到一個阻止服務器啓動的腳本,則必須使用常規的WSL Shell並刪除或重命名安裝腳本。
檢查WSL日誌(遠程WSL:打開WSL日誌)以獲取輸出和錯誤。
高級:在容器中打開WSL2文件夾
如果您使用的是WSL2和Docker Desktop的WSL2後端,則可以使用Remote-Containers擴展來處理存儲在WSL中的源代碼!只需按照以下步驟操作:
-
如果尚未安裝和安裝 Docker Desktop的WSL2支持,請安裝並設置。
提示: 轉到“設置”>“資源”>“ WSL集成”,然後將Docker與您將使用的WSL發行版集成。
-
如果尚未安裝,請同時安裝Remote-Containers擴展程序和WSL擴展程序。
-
接下來,像往常一樣在WSL中打開您的源代碼文件夾。
-
在WSL中打開文件夾後,從命令面板(F1)中選擇“ 遠程容器:在容器中重新打開文件夾”。
-
如果該文件夾中沒有
.devcontainer/devcontainer.json
文件,則將要求您從可過濾列表或現有Dockerfile或Docker Compose文件(如果存在)中選擇一個起點。
有關更多信息,請參見Remote-Containers文檔。
已知限制
本節包含WSL的常見問題列表。目的不是提供完整的問題列表,而是強調WSL中常見的一些問題。
我看到EACCESS:嘗試重命名打開的工作區中的文件夾時,權限被拒絕的錯誤
這是由VSCode激活的文件監視程序導致的WSL文件系統實現(Microsoft / WSL#3395和Microsoft / WSL#1956)的已知問題。該問題僅在WSL 2中得以解決。
爲避免此問題,請將其設置remote.WSL.fileWatcher.polling
爲true。但是,基於輪詢的文件監視對大型工作區的性能有影響。
對於較大的工作空間,您想增加輪詢間隔:remote.WSL.fileWatcher.pollingInterval
並控制要監視的文件夾:files.watcherExclude
。
WSL 2沒有文件監視程序問題,也不受新設置的影響。