<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Udc/Source3 on swaw</title><link>https://swaw.com/tags/udc/source3/</link><description>Recent content in Udc/Source3 on swaw</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 05 Apr 2026 02:54:53 +0800</lastBuildDate><atom:link href="https://swaw.com/tags/udc/source3/index.xml" rel="self" type="application/rss+xml"/><item><title>Xvenv</title><link>https://swaw.com/p/xvenv/</link><pubDate>Sun, 12 Oct 2025 20:11:44 +0800</pubDate><guid>https://swaw.com/p/xvenv/</guid><description>&lt;h1 id="彻底告别环境污染xvenv一个-bat-脚本极速拉起免安装全栈开发环境"&gt;彻底告别环境污染！Xvenv：一个 BAT 脚本极速拉起免安装全栈开发环境&lt;/h1&gt;
&lt;p&gt;在日常开发中，我们几乎都经历过以下“噩梦”时刻：&lt;/p&gt;
&lt;p&gt;系统环境严重污染：为了跑不同项目，装了无数个 Python、Node、Go 版本，PATH 环境变量乱成一锅粥，甚至出现版本冲突，排查起来令人抓狂。
难以忍受的 C++ 编译链：为了写点 Rust 甚至搞点 C++ 扩展，被迫安装动辄十几 GB 的 Visual Studio，不仅下载巨慢，卸载还会残留一堆注册表垃圾。
令人精分的 Git 身份管理：白天写公司项目，晚上搞开源，一个不留神就把公司邮箱 Commit 到了 Github 上，或者多个Github账号来回切换连SSH Key 都配不明白，然后去修改仓库权限。
团队协作卡在第一步：新同事入职，花半天时间看文档“配置开发环境”，结果因为系统环境差异各种报错，“在我电脑上明明能跑”成了千古魔咒。&lt;/p&gt;
&lt;p&gt;想要一个不改系统 PATH、不用安装臃肿 VS、不做任何系统修改、一个项目一套环境，即插即用的随身开发工具箱？&lt;/p&gt;
&lt;p&gt;介绍一下我的开源工具 —— Xvenv，它用最复古的形式（一个单批处理文件），解决了最现代的开发环境隔离问题。&lt;/p&gt;
&lt;h2 id="什么是-xvenv"&gt;什么是 Xvenv？&lt;/h2&gt;
&lt;p&gt;一个极简的 .bat单文件脚本（xvenv.cmd，内部使用 Bat + PowerShell 混编(Polyglot)技术，无需任何外部依赖）。&lt;/p&gt;
&lt;p&gt;你可以把它复制多份，放到不同的项目/目录中，然后只需双击，它就会一键下载、解压、并以免安装方式配置好所有所需的开发环境。所有文件、环境设置…都被锁定在它自身所在目录的.xvenv文件夹中。下次双击，会拉起一个加载了所有所需环境配置的专用终端，你的系统依然洁白如新。&lt;/p&gt;
&lt;p&gt;若同时运行多个不同目录的xvenv.cmd，它们之间亦是完全独立，互不影响。&lt;/p&gt;
&lt;h2 id="强大且纯粹的核心功能模块"&gt;强大且纯粹的核心功能模块&lt;/h2&gt;
&lt;p&gt;Xvenv 的哲学是“按需拼装”。只需在脚本顶部指定你需要的模块名，它就会自动为你搭建好以下支持的环境：&lt;/p&gt;
&lt;h3 id="msvc免安装极速-c-编译链"&gt;msvc免安装极速 C++ 编译链&lt;/h3&gt;
&lt;p&gt;痛点：只是想编译一个 Rust 项目或者装个带有 C 扩展的 Python 包，却要被逼着下几十 GB 的 Visual Studio ？
Xvenv 方案：它是 Xvenv 的核心“黑魔法”。脚本会直接解析微软官方的离线 Manifest，精准提取并下载组装 C++ 头文件、库和工具链组件。完全不需要 Visual Studio，几分钟内生成一个纯绿色的 MSVC 环境。&lt;/p&gt;</description></item></channel></rss>