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

DotNet/NuGet是否有Conan Workspace等效工具?多依赖项目开发咨询

.NET/NuGet生态下类似Conan及Conan Workspace的工具与替代工作流

有没有与Conan/Conan Workspace等效的工具

NuGet生态里没有完全和Conan+Conan Workspace功能完全匹配的工具,但有功能重叠的组件:

  • NuGet本身就是.NET的包管理核心,负责包的分发、依赖解析、版本管理,对应Conan的包管理核心功能。
  • .NET解决方案(Solution)+项目引用是最接近Conan Workspace的本地多项目协作机制:它能把多个依赖项目组织在一起,开发时修改某个项目后,依赖它的项目会自动同步编译最新代码,无需手动打包发布,和Conan Workspace的本地开发体验一致,但它是项目组织工具,而非专门的包管理工具。
  • 辅助工具方面,dotnet pack用来将本地项目打包为NuGet包,对应Conan的打包功能;dotnet add package支持添加本地包源或直接引用本地项目,补充了本地依赖的管理能力。

同时开发多个依赖项目/包的替代工作流

如果需要同时开发多个相互依赖的.NET项目或包,常用的替代工作流有以下几种:

1. 同一解决方案内的项目直接引用

如果所有依赖项目都在同一解决方案下,直接使用项目引用替代NuGet包引用:

  • 执行命令:dotnet add reference ../MyDependencyProject/MyDependencyProject.csproj
  • 这样修改依赖项目的代码后,引用它的项目会自动编译最新版本,完全模拟Conan Workspace的本地开发联动效果,无需打包和发布包。

2. 本地NuGet源模拟真实依赖场景

如果项目不在同一解决方案,或者需要模拟线上NuGet包的依赖流程,可以搭建本地NuGet源:

  • 第一步:创建本地文件夹作为NuGet源,比如./local-nuget-source
  • 第二步:将开发中的项目打包:dotnet pack -c Release -o ./local-nuget-source
  • 第三步:给依赖项目添加本地源:dotnet nuget add source ./local-nuget-source --name LocalSource
  • 第四步:在依赖项目中引用本地包:dotnet add package MyDependencyPackage --source LocalSource
  • 每次修改依赖项目后,重新打包推送到本地源,依赖项目更新包版本即可获取最新代码。

3. 统一配置管理

用Directory.Build.props文件在根目录统一管理多个项目的依赖版本、打包参数等:

  • 在项目根目录创建Directory.Build.props,示例内容:
<Project>
  <PropertyGroup>
    <Version>1.0.0-dev</Version>
    <PackageId>MyCompany.*</PackageId>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
  </ItemGroup>
</Project>
  • 所有子项目会自动继承这些配置,避免重复设置,类似Conan的全局profile或配置文件。

4. 临时依赖替换

如果需要临时将某个NuGet包依赖替换为本地项目,可以直接修改项目文件:

  • 将<PackageReference Include="MyPackage" Version="1.0.0" />替换为<ProjectReference Include="../MyLocalProject/MyLocalProject.csproj" />
  • 开发完成后再改回包引用,这种方式适合快速调试本地依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:55:16