如何搭建 WSL 开发环境并完成第一次构建与部署?

如何搭建 WSL 开发环境并完成第一次构建与部署? 如何搭建 WSL 开发环境并完成第一次构建与部署【免费下载链接】WSLWindows Subsystem for Linux项目地址: https://gitcode.com/GitHub_Trending/ws/WSL如果你要在 Windows 上从源码构建 Windows Subsystem for LinuxWSL并把构建出的包安装到本机或 Hyper-V 虚拟机上跑第一轮测试本文按 开发文档 给出一条可执行路径安装构建依赖 → 生成解决方案并构建 → 部署 MSI → 运行首次测试。适用环境是 Windowsx64 或 ARM64面向需要构建和修改 WSL 的开发者普通用户直接安装 WSL 只需在 Windows 命令行运行wsl --install见 README不走本流程。准备构建环境所有前置依赖可以由一个脚本自动安装。在仓库根目录的 PowerShell 中运行tools\setup-dev-env.ps1该脚本基于 WinGet Configuration会安装 Developer Mode、CMake、Visual Studio 2022 以及.vsconfig中定义的工作负载。它先通过 vswhere 检测本机已安装的 VS 2022已安装时选用与版本匹配的配置文件Community / Professional / Enterprise 分别对应 .config 目录下的configuration.winget、configuration.vsProfessional.winget、configuration.vsEnterprise.winget未检测到 VS 2022 时默认安装 Community。脚本末尾会直接提示下一步命令cmake . cmake --build . -- -m如果偏好手动安装需要CMake 3.25可用winget install Kitware.CMake安装Visual Studio 2022 及所需组件通过 VS Installer → More → Import configuration 导入.vsconfig或执行winget install Microsoft.VisualStudio.2022.Community --override --wait --quiet --config .vsconfig在 Windows 设置中启用 Developer Mode或者用管理员权限运行构建——符号链接支持需要两者之一手动运行时需显式启用 WinGet Configuration 功能再指向仓库内的配置文件winget configure --enable winget configure -f .config/configuration.winget # Community默认 winget configure -f .config/configuration.vsProfessional.winget # Professional winget configure -f .config/configuration.vsEnterprise.winget # EnterpriseARM64 机器的额外要求在 ARM64 Windows 上构建时WiX 工具集wix.exe是 x64 二进制文件需要x64 .NET 6.0 运行时仅有 ARM64 .NET 运行时不够。按 开发文档 在 PowerShell 中安装# Download the official dotnet-install script Invoke-WebRequest -Uri https://dot.net/v1/dotnet-install.ps1 -OutFile $env:TEMP\dotnet-install.ps1 # Install the x64 .NET 6.0 runtime powershell -ExecutionPolicy Bypass -File $env:TEMP\dotnet-install.ps1 -Channel 6.0 -Runtime dotnet -Architecture x64 -InstallDir C:\Program Files\dotnet\x64然后设置DOTNET_ROOT_X64环境变量使运行时可被发现# Set for the current session $env:DOTNET_ROOT_X64 C:\Program Files\dotnet\x64 # Set permanently for your user [System.Environment]::SetEnvironmentVariable(DOTNET_ROOT_X64, C:\Program Files\dotnet\x64, User)环境变量生效后可能需要重启 VS Code 或新开终端才能被构建工具识别。执行第一次构建克隆仓库后在仓库根目录生成 Visual Studio 解决方案cmake .这会生成wsl.sln之后可以用 Visual Studio 打开构建也可以在命令行构建cmake --build .按需附加构建参数来自 开发文档参数用途cmake . -A arm64构建 ARM64 包cmake . -DCMAKE_BUILD_TYPEReleaseRelease 构建配合cmake --build . --config Releasecmake . -DBUILD_BUNDLETRUE构建 bundle msix 包要求先完成一次 ARM64 构建可选加快「构建—部署」迭代频繁重复构建部署时把 UserConfig.cmake.sample 复制为UserConfig.cmakecopy UserConfig.cmake.sample UserConfig.cmake再取消其中这一行的注释# set(WSL_DEV_BINARY_PATH C:/wsldev)这会改变构建逻辑生成体积更小、安装更快的开发包样例文件注明.vhd文件无法通过符号链接/硬链接挂载脚本内部改用复制并对只读 VHD 用icacls.exe授予 Everyone 只读权限。同一文件还提供两个可选开关set(WSL_BUILD_THIN_PACKAGE true)构建更小的「thin」MSI 包set(WSL_POST_BUILD_COMMAND powershell;-ExecutionPolicy;Bypass;-NoProfile;-NonInteractive;./tools/deploy/deploy-to-host.ps1)每次构建完成后自动把包部署到本机部署构建产物构建完成后MSI 包位于bin\platform\target\wsl.msi文档示例中平台与配置写作x64和debug如bin\x64\debug\ARM64 Release 构建则对应bin\arm64\Release\。方式一直接安装 MSI用系统安装器安装bin\platform\target\wsl.msi即可。方式二部署脚本推荐powershell tools\deploy\deploy-to-host.ps1deploy-to-host.ps1 声明#Requires -RunAsAdministrator需在管理员 PowerShell 中运行。脚本默认安装 Debug 包bin\platform\Debug\wsl.msi可用-BuildType Release切换先把符号链接解析为真实路径msiexec 不接受符号链接再执行msiexec.exe /i 包路径 /qn /norestart静默安装且不重启。判断结果看脚本输出成功时打印Package 路径 installed successfully失败时打印Failed to install package: 退出码并以退出码 1 结束。可选部署到 Hyper-V 虚拟机powershell tools\deploy\deploy-to-vm.ps1 -VmName vm -Username username -Password passworddeploy-to-vm.ps1 会创建到虚拟机的 PowerShell 会话把bin/platform/BuildType/wsl.msi复制到虚拟机后远程执行同样的msiexec静默安装。把vm、username、password替换为你的虚拟机名与登录凭据-Platform支持X64默认或arm64。验证部署运行第一轮测试部署完成后用构建输出目录中的test.bat运行单元测试。完整测试量很大文档推荐先跑一个合理子集bin\x64\debug\test.bat /name:*UnitTest*按你的实际平台与构建配置替换目录例如 ARM64 Release 为bin\arm64\Release\test.bat。运行单个测试用例的格式为test.bat /name:class::test文档示例bin\x64\debug\test.bat /name:UnitTests::UnitTests::ModernInstall其他选项-Version 1在 WSL1 上运行测试例如bin\x64\debug\test.bat -Version 1首次运行测试后可把test_distro设为默认发行版之后加-f跳过包安装以加速测试前提是test_distro确实已是默认 WSL 发行版wsl --set-default test_distro bin\x64\debug\test.bat /name:*UnitTest* -f测试基于 TAEF 框架执行test/README.md 给出了TE.exe的完整参数/list列出已加载测试、/name:支持*和?通配符筛选、/inproc在 TE.exe 进程内执行以便调试。调试时test.bat还支持/attachdebugger自动附加 WinDbgX需已安装 WinDbg、/waitfordebugger等待手动附加、/breakonfailure首个测试失败时中断通用调试方法见 debugging 文档。限制与边界符号链接支持要求 Developer Mode 或管理员权限构建二者至少要满足其一否则构建可能失败。bundle msix-DBUILD_BUNDLETRUE必须先行完成 ARM64 构建仅 x64 构建无法产出。本流程的「部署」指把自构建包装到开发机或测试虚拟机上验证生产分发应使用官方渠道自构建包不面向最终用户。若后续要提交代码PR 合并前必须通过 clang-formatpowershell .\FormatSource.ps1 -ModifiedOnly $false或先执行cmake .再运行tools\SetupClangFormat.bat启用提交前自动检查检查行为由UserConfig.cmake中的WSL_PRE_COMMIT_MODE控制warn默认 /error阻断提交 /fix自动修复并重新暂存。【免费下载链接】WSLWindows Subsystem for Linux项目地址: https://gitcode.com/GitHub_Trending/ws/WSL创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考