登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
C# 多项目打包时如何将项目引用转为包依赖 ...
C# 多项目打包时如何将项目引用转为包依赖
[ 复制链接 ]
揉幽递
2025-6-2 00:40:17
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
项目背景
最近开发一组类库,大约会有五六个项目。一个Core,加上若干面向不同产品的实现库,A/B/C/D...它们都依赖Core.
首先,我想统一版本号,这个容易,通过Directory.Build.props设置。
其次,每个库要单独发包。
问题是在开发阶段,子项目都是通过项目引用Core的,便于调试,怎么实现在打包时自动加上对Core包的依赖?
经过试验,可以总结三种方法:
一、生成时将 ProjectReference 转为 NuGet 依赖项 (Not Work)
这个DeepSeek推荐的方案,但很遗憾,我没试验成功。
它的项目结构是这样的:
<ItemGroup>
<ProjectReference Include="..\Core\MyProject.Core.csproj" >
<PrivateAssets>all</PrivateAssets>
<Publish>true</Publish>
<Version>$(PackageVersion)</Version>
<PackageId>MyProject.Core</PackageId>
</ProjectReference>
</ItemGroup>
<Target Name="ForcePackageReferenceConversion" BeforeTargets="GenerateNuspec">
<ItemGroup>
<_PackageReferencesToAdd Include="@(ProjectReference->WithMetadataValue('Publish', 'true'))">
<PackageId>%(PackageId)</PackageId>
<Version>%(Version)</Version>
</_PackageReferencesToAdd>
<PackageReference Include="@(_PackageReferencesToAdd->'%(PackageId)')" Version="%(Version)" />
</ItemGroup>
</Target>
复制代码
它的核心思路是生成.nuspec前将项目引用强制转换在包引用。
我也问了Github Copilot,它也说行,but...请有经验的园友不吝赐教。
二、按条件引用
项目结构:
<ItemGroup>
<ProjectReference Include="..\Core\MyProject.Core.csproj"
Condition="'$(IsPackaging)' != 'true'" />
<PackageReference Include="MyProject.Core"
Version="$(PackageVersion)"
Condition="'$(IsPackaging)' == 'true'" />
</ItemGroup>
复制代码
然后使用命令生成:
dotnet pack -p:IsPackaging=true
复制代码
此法可行。
三、指定.nuspec文件
最后,我又想到了用传统的.nuspec文件。(我很喜欢以前的包管理方式,packages.config/nuspec,不理解为什么MS非要把所有的东西都往project文件里塞。)
项目结构:
My.nuspec<ItemGroup>
<ProjectReference Include="..\Core\MyProject.Core.csproj"
Condition="'$(IsPackaging)' != 'true'" />
<PackageReference Include="MyProject.Core"
Version="$(PackageVersion)"
Condition="'$(IsPackaging)' == 'true'" />
</ItemGroup>$(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.
验证可行。
<ItemGroup>
<
rojectReference Include="..\Core\MyProject.Core.csproj"
Condition="'$(IsPackaging)' != 'true'" />
<
ackageReference Include="MyProject.Core"
Version="$(PackageVersion)"
Condition="'$(IsPackaging)' == 'true'" />
</ItemGroup>出处:http://www.cnblogs.com/cnsharp/<ItemGroup>
<
rojectReference Include="..\Core\MyProject.Core.csproj"
Condition="'$(IsPackaging)' != 'true'" />
<
ackageReference Include="MyProject.Core"
Version="$(PackageVersion)"
Condition="'$(IsPackaging)' == 'true'" />
</ItemGroup>本文版权归CnSharp.com和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
项目
打包
如何
引用
转为
相关帖子
工作后如何进行持续学习
开源项目分享 : Gitee热榜项目 2025-12-13 日榜
如何使用 vxe-gantt table 甘特图来实现多个维度视图展示
昆明黄金店推荐:如何甄选“价值平权”的黄金消费专家?
开源项目分享:Gitee热榜项目 2025年12月第二周 周榜
制造行业项目管理工具选型经验分享(简直是高效选型指南,少走弯路)
2026年成都品牌主,如何选择AI优化搜索(AI GEO)合作伙伴,附压箱底选购技巧
企业数字化转型如何破局?看这三大招
Open-AutoGLM项目衍生自研app测试思路
如何使用DashVector的多向量检索
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
工作后如何进行持续学习
1
643
祖娅曦
2025-12-12
业界
开源项目分享 : Gitee热榜项目 2025-12-13 日榜
0
858
翁真如
2025-12-13
代码
如何使用 vxe-gantt table 甘特图来实现多个维度视图展示
1
793
晚能
2025-12-13
安全
昆明黄金店推荐:如何甄选“价值平权”的黄金消费专家?
0
236
靳夏萱
2025-12-14
业界
开源项目分享:Gitee热榜项目 2025年12月第二周 周榜
0
849
澹台吉星
2025-12-14
业界
制造行业项目管理工具选型经验分享(简直是高效选型指南,少走弯路)
0
498
都硎唷
2025-12-15
科技
2026年成都品牌主,如何选择AI优化搜索(AI GEO)合作伙伴,附压箱底选购技巧
0
960
百谖夷
2025-12-15
安全
企业数字化转型如何破局?看这三大招
0
76
滑清怡
2025-12-16
安全
Open-AutoGLM项目衍生自研app测试思路
0
965
施婉秀
2025-12-16
业界
如何使用DashVector的多向量检索
0
248
别萧玉
2025-12-16
回复
(2)
列蜜瘘
2025-11-26 19:32:32
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
鼓励转贴优秀软件安全工具和文档!
袁可佳
4 天前
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
用心讨论,共获提升!
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
揉幽递
4 天前
关注
0
粉丝关注
21
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994893
kk14977
6845357
4
xiangqian
638210
5
韶又彤
9997
6
宋子
9983
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
157
【译】初探 Visual Studio 2026 全新的用户
315
建筑渗漏治理的标准化实践:基于上海芮生建
48
Aspire 13:从.NET 编排工具到真正的多语言
997
用 .NET 最小化 API 构建高性能 API
394
VonaJS是如何做到文件级别精确HMR(热更新)
386
PHP 值对象实战指南:避免原始类型偏执
98
北京上门收酒机构排行|3家靠谱之选,卖酒
921
好拼|免费在线拼图工具又收到赞助啦
479
数据点的“社交距离”:衡量它们之间的相似
718
告别“草率编程”:Vibe Engineering 如何
10
字符串匹配算法
342
监听小工具-股票监控神奇九转分钟线信号触
427
国内GEO优化技术深度测评:核心维度全景对
366
Avalonia源码解读:Grid(网格控件)
239
研究 TikTok 爆款的人,一定要懂这类下载工
960
Java Optional 完全指南:优雅处理 null 的
26
全面封禁 Cursor!又一家大厂出手了
883
记一次MySQL binlog日志导致磁盘空间占满的
783
记一次MySQL binlog日志导致磁盘空间占满的
880
小白也能看懂的RLHF-PPO:原理篇