windows10 visual studio code 在WSL中開發 linux c 程序

在WSL中開發

Visual Studio代碼遠程- WSL擴展允許您使用的Windows子系統爲Linux(WSL)來自VS代碼您的全職開發環境權。您可以在基於Linux的環境中進行開發,使用特定於Linux的工具鏈和實用程序,以及在Windows的舒適環境下運行和調試基於Linux的應用程序。

該擴展名直接在WSL中運行命令和其他擴展名,因此您可以編輯WSL或已安裝的Windows文件系統中的文件(例如/mnt/c),而不必擔心路徑問題,二進制兼容性或其他跨OS挑戰。

WSL體系結構

 

這使得VS Code可以提供本地質量的開發體驗 -包括完整的IntelliSense(完成功能),代碼導航和調試- 不管代碼託管在何處

入門

安裝

要開始使用,您需要:

  1. 安裝Windows Subsystem for Linux和首選的Linux發行版。

    注意: WSL 1 對於某些類型的開發確實有一些已知的限制,並且WSL 2支持是試驗性的。另外,由於glibc擴展程序內部代碼的依賴性,安裝在Alpine Linux中的擴展程序可能無法工作。有關詳細信息,請參見“ 遠程開發和Linux”文章。

  2. Windows端(不在WSL中)安裝Visual Studio Code

    注意:在安裝過程中提示您選擇“其他任務”時,請確保選中“ 添加到路徑”選項,以便您可以使用以下code命令在WSL中輕鬆打開文件夾。

  3. 安裝遠程開發擴展包

打開一個遠程文件夾或工作區

從WSL終端

使用VS Code在Linux的Windows子系統內部打開文件夾與從命令提示符或PowerShell打開Windows文件夾非常相似。

  1. 打開WSL終端窗口(使用開始菜單項或wsl在命令提示符/ PowerShell中鍵入)。

  2. 導航到您要在VS Code中打開的文件夾(包括但不限於Windows文件系統掛載,例如/mnt/c

  3. 鍵入code .在終端中。首次執行此操作時,您應該看到在WSL中運行所需的VS Code提取組件。這應該只需要一會兒,並且只需要一次。

    注意:如果此命令不起作用,則可能需要重新啓動終端,或者在安裝VS Code時未將其添加到路徑中。

  4. 片刻之後,將出現一個新的VS Code窗口,您將看到VS Code正在WSL中打開該文件夾的通知。

    WSL開始通知

    VS Code現在將繼續在WSL中進行自我配置,並讓您保持最新狀態。

  5. 完成後,您現在將在左下角看到WSL指示器,並且可以像平常一樣使用VS Code!

    WSL狀態欄項目

而已!您在此窗口中執行的所有VS Code操作都將在WSL環境中執行,從編輯和文件操作到調試,使用終端等更多操作。

從VS代碼

或者,您可以直接從VS Code打開“遠程WSL”窗口:

  1. 啓動VS Code。
  2. F1鍵,爲默認發行版選擇“ Remote-WSL:新窗口”,或爲特定發行版選擇“ 使用Distro的Remote-WSL:新窗口”
  3. 使用文件菜單打開您的文件夾。

如果已經打開了文件夾,則還可以使用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以查看命令行中可用的選項。

使用代碼CLI

在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中的源代碼!只需按照以下步驟操作:

  1. 如果尚未安裝和安裝 Docker Desktop的WSL2支持,請安裝並設置

    提示: 轉到“設置”>“資源”>“ WSL集成”,然後將Docker與您將使用的WSL發行版集成。

  2. 如果尚未安裝,請同時安裝Remote-Containers擴展程序和WSL擴展程序。

  3. 接下來,像往常一樣在WSL中打開您的源代碼文件夾

  4. 在WSL中打開文件夾後,從命令面板(F1)中選擇“ 遠程容器:在容器中重新打開文件夾”

  5. 如果該文件夾中沒有.devcontainer/devcontainer.json文件,則將要求您從可過濾列表或現有DockerfileDocker Compose文件(如果存在)中選擇一個起點。

 

  1. select-dev-container-def.pnguploading.4e448015.gif正在上傳…重新上傳取消

  2. VS Code窗口(實例)將重新加載並開始構建dev容器。進度通知提供狀態更新。

    開發容器進度通知

  3. 構建完成後,VS Code將自動連接到容器。現在,您可以從容器內部使用源代碼。

有關更多信息,請參見Remote-Containers文檔

已知限制

本節包含WSL的常見問題列表。目的不是提供完整的問題列表,而是強調WSL中常見的一些問題。

有關與WSL相關的活動問題的列表,請參見此處

我看到EACCESS:嘗試重命名打開的工作區中的文件夾時,權限被拒絕的錯誤

這是由VSCode激活的文件監視程序導致的WSL文件系統實現(Microsoft / WSL#3395Microsoft / WSL#1956)的已知問題。該問題僅在WSL 2中得以解決。

爲避免此問題,請將其設置remote.WSL.fileWatcher.polling爲true。但是,基於輪詢的文件監視對大型工作區的性能有影響。

對於較大的工作空間,您想增加輪詢間隔:remote.WSL.fileWatcher.pollingInterval並控制要監視的文件夾:files.watcherExclude

WSL 2沒有文件監視程序問題,也不受新設置的影響。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章