如何在JetBrains Rider中本地临时开发两个依赖的NuGet项目?
在B中临时使用本地版本A的标准工作流(C#/NuGet + Rider)
针对你需要同时开发类库A和B、临时用本地A替代远程NuGet包的场景,以下是几种标准做法,结合Rider功能优化操作:
1. 项目引用直接替代NuGet包(最常用的本地开发方式)
这是本地协同开发最直接的方案,完全绕过NuGet仓库:
- 操作步骤:打开B的解决方案,右键B项目 →
Add→Project Reference,找到本地克隆的A项目的.csproj文件添加。 - 优势:Rider会自动处理编译依赖,调试时可直接跳转至A的源码,无需打包NuGet包,修改A后B会自动同步编译。
- 注意:开发完成后,务必移除该项目引用,改回原NuGet包引用,避免提交错误配置。
2. 本地NuGet源+预发布版本(类Maven SNAPSHOT思路)
如果想保留NuGet依赖的流程(模拟正式发布场景),可以用预发布版本配合本地源:
- 操作步骤:
- 给A设置预发布版本:在A的
.csproj中修改<Version>节点(比如稳定版是1.0.0,改为1.0.1-dev.1),或在Rider项目属性→Package面板中设置。 - 打包本地A:右键A项目 →
Pack,生成的.nupkg文件默认在bin/Debug或bin/Release目录。 - 添加本地NuGet源:打开Rider
Settings→Build, Execution, Deployment→NuGet→Package Sources,点击加号添加本地文件夹(比如A的bin目录或专门的本地NuGet仓库文件夹)。 - 切换B的依赖版本:在B的NuGet包管理器中,将A的版本切换为刚才生成的预发布版本,Rider会自动从本地源拉取。
- 给A设置预发布版本:在A的
- 优势:贴合正式发布流程,可测试包的安装、依赖传递逻辑,预发布版本遵循SemVer规范,不会与正式版本混淆。
- 注意:开发完成后,将B的依赖改回正式版本,可清理本地源的临时包。
3. 手动指定HintPath(无需修改版本号)
如果不想修改版本号,可直接在B的项目文件中指定本地包路径:
- 操作步骤:编辑B的
.csproj,找到A的PackageReference节点,添加HintPath属性指向本地A的.nupkg文件:
<PackageReference Include="A" Version="1.0.0"> <HintPath>..\A\bin\Debug\A.1.0.0.nupkg</HintPath> </PackageReference>
- 原理:强制NuGet使用指定路径的本地包,而非远程仓库。Rider会识别该配置并正常加载依赖。
- 注意:提交代码前需移除
HintPath,避免其他开发者环境报错。
关于版本号的说明
在NuGet生态中,预发布版本号是标准的临时版本标识方式,和Maven的SNAPSHOT逻辑类似,但NuGet没有自动更新SNAPSHOT包的机制,需要手动打包并指定具体版本号。如果用项目引用的方式,则无需修改版本号,这种方式在本地联调时更高效。
Rider实用小技巧
- 切换依赖配置后,可利用Rider的
Local History功能,方便后续恢复到原依赖状态。 - 使用项目引用时,Rider会自动将A的项目加入解决方案,断点调试可直接在A、B代码间跳转,无需额外配置。
内容的提问来源于stack exchange,提问作者Gustave
相关产品推荐
相关产品推荐

