You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否将单个VSTS项目映射至多个本地工作区?VS2017共享类库源码管控求助

解决VS2017跨解决方案共享类库并纳入源码管控的方案

我来给你几个实用的方案,都是在VS2017环境下常用的共享类库并同步源码管控的办法,你可以根据自己的源码工具(Git/TFS等)和团队需求选择:

1. Git子模块方案(适合用Git做源码管控的场景)

如果你的两个解决方案都是用Git管理的,子模块是最推荐的方式,它能让共享类库作为独立仓库,同时被两个解决方案关联引用:

  • 在第一个解决方案的Git仓库根目录,打开命令行执行:
    git submodule add <共享类库的Git仓库地址> ./Shared/MySharedLib
    
  • 执行后会在当前解决方案目录下生成一个Shared/MySharedLib文件夹,里面就是共享类库的源码;
  • 在VS2017中右键解决方案 → 添加 → 现有项目,选中Shared/MySharedLib里的类库项目文件;
  • 对第二个解决方案重复同样的操作,这样两个工作区都能引用共享类库,而且各自的Git仓库会记录子模块的版本,修改共享类库后可以单独提交到它的仓库,其他解决方案拉取子模块更新即可。

2. 独立仓库克隆引用方案(简单直接,适合小型项目)

把共享类库单独创建一个独立的源码仓库,然后在两个解决方案的工作区分别克隆这个仓库:

  • 在解决方案A的工作区克隆共享类库仓库:git clone <共享类库仓库地址> ./MySharedLib;
  • 在VS2017里将克隆后的类库项目添加到解决方案A;
  • 对解决方案B的工作区做同样的克隆和添加操作;
  • 后续修改共享类库时,直接在任意一个工作区的克隆目录里提交代码到独立仓库,另一个工作区拉取更新就能同步,这种方式不需要复杂配置,新手也能快速上手。

3. Windows符号链接方案(适合非Git管控或需要直接关联本地文件的场景)

如果你的源码管控工具是TFS或者其他不支持子模块的工具,可以用Windows符号链接让两个工作区指向同一个共享类库目录:

  • 以管理员身份打开命令提示符,执行命令(替换成你的实际路径):
    mklink /D "D:\WorkspaceA\SolutionA\SharedLib" "D:\WorkspaceB\SolutionB\SharedLib"
    
  • 这个命令会在SolutionA的目录下创建一个指向SolutionB中共享类库的符号链接;
  • 在VS2017中添加现有项目时,选中这个符号链接里的类库项目即可;
  • 注意:需要确保你的源码管控工具支持符号链接(比如TFS需要在服务器端开启允许符号链接的配置),而且团队成员的本地路径要保持一致,否则符号链接会失效。

4. 本地NuGet源方案(适合需要版本管控的稳定类库)

如果共享类库不需要频繁修改,或者需要严格的版本管理,可以把它打包成NuGet包,用本地源共享:

  • 在VS2017中右键共享类库项目 → 打包,生成.nupkg文件;
  • 创建一个本地文件夹作为NuGet源,把生成的.nupkg文件放进去;
  • 在两个解决方案的NuGet包管理器设置里,添加这个本地文件夹作为包源;
  • 然后在解决方案中安装这个本地NuGet包即可;
  • 后续更新类库时,重新打包并替换本地源里的包,另一个解决方案直接更新NuGet包就能获取最新版本,这种方式能避免直接修改源码带来的冲突,适合类库相对稳定的场景。

内容的提问来源于stack exchange,提问作者hshen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:41:50