C# 多项目打包时如何将项目引用转为包依赖
笔记哥 /
04-10 /
17点赞 /
0评论 /
608阅读
# 项目背景
最近开发一组类库,大约会有五六个项目。一个Core,加上若干面向不同产品的实现库,A/B/C/D...它们都依赖Core.
首先,我想统一版本号,这个容易,通过Directory.Build.props设置。
其次,每个库要单独发包。
问题是在开发阶段,子项目都是通过项目引用Core的,便于调试,怎么实现在打包时自动加上对Core包的依赖?
经过试验,可以总结三种方法:
**一、生成时将 ProjectReference 转为 NuGet 依赖项 (Not Work)**
这个DeepSeek推荐的方案,但很遗憾,我没试验成功。
它的项目结构是这样的:
```csharp
all
true
$(PackageVersion)
MyProject.Core
<_PackageReferencesToAdd Include="@(ProjectReference->WithMetadataValue('Publish', 'true'))">
%(PackageId)
%(Version)
```
它的核心思路是生成.nuspec前将项目引用强制转换在包引用。
我也问了Github Copilot,它也说行,but...请有经验的园友不吝赐教。
**二、按条件引用**
项目结构:
```csharp
```
然后使用命令生成:
```csharp
dotnet pack -p:IsPackaging=true
```
此法可行。
**三、指定.nuspec文件**
最后,我又想到了用传统的.nuspec文件。(我很喜欢以前的包管理方式,packages.config/nuspec,不理解为什么MS非要把所有的东西都往project文件里塞。)
项目结构:
```csharp
My.nuspec
$(NuspecProperties);
id=$(PackageId);
version=$(Version);
company=$(Company);
authors=$(Authors);
product=$(Product);
copyright=$(Copyright);
license=$(PackageLicenseExpression);
projectUrl=$(PackageProjectUrl);
repositoryUrl=$(RepositoryUrl);
repositoryType=$(RepositoryType);
icon=$(PackageIcon);
config=$(Configuration)
```
它将Directory.Build.props中定义的属性一一赋给nuspec.
验证可行。
本文来自投稿,不代表本站立场,如若转载,请注明出处:http//www.knowhub.vip/share/2/2155
- 热门的技术博文分享
- 1 . ESP实现Web服务器
- 2 . 从零到一:打造高效的金仓社区 API 集成到 MCP 服务方案
- 3 . 使用C#构建一个同时问多个LLM并总结的小工具
- 4 . .NET 原生驾驭 AI 新基建实战系列Milvus ── 大规模 AI 应用的向量数据库首选
- 5 . 在Avalonia/C#中使用依赖注入过程记录
- 6 . [设计模式/Java] 设计模式之工厂方法模式
- 7 . 5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
- 8 . SQL 中的各种连接 JOIN 的区别总结!
- 9 . JavaScript 中防抖和节流的多种实现方式及应用场景
- 10 . SaltStack 远程命令执行中文乱码问题
- 11 . 推荐10个 DeepSeek 神级提示词,建议搜藏起来使用
- 12 . C#基础:枚举、数组、类型、函数等解析
- 13 . VMware平台的Ubuntu部署完全分布式Hadoop环境
- 14 . C# 多项目打包时如何将项目引用转为包依赖
- 15 . Chrome 135 版本开发者工具(DevTools)更新内容
- 16 . 从零创建npm依赖,只需执行一条命令
- 17 . 关于 Newtonsoft.Json 和 System.Text.Json 混用导致的的序列化不识别的问题
- 18 . 大模型微调实战之训练数据集准备的艺术与科学
- 19 . Windows快速安装MongoDB之Mongo实战
- 20 . 探索 C# 14 新功能:实用特性为编程带来便利