登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
如何在 DotNet 中使用类似 golang 的 vendor 的编译模式 ...
如何在 DotNet 中使用类似 golang 的 vendor 的编译模式
[ 复制链接 ]
乳杂丫
昨天 19:15
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!
cnblogs博客
zhihu
Github
公众号:一本正经的瞎扯
一个项目中,存在部分库是公司内的,且需要配置个人的用户名和密码连接到 NuGet 站点,才能下载这些库。
而有时候需要直接把一个仓库拉到某个环境上进行编译,且不希望把带了密码的 NuGet.Config 文件提交到代码仓库中。
能不能把公司内的库放到类似 golang 的 vendor 目录下?然后编译机器拉到仓库后就能直接编译,而不再依赖公司的 NuGet 站点了。
下面是我的做法:
下载所有依赖库
在项目根目录中定义一个配置完整的 NuGet.Config 文件,取名为: NuGet.Config.for.download
NuGet.Config.for.download
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
</packageSources>
<packageSourceMapping>
<packageSource key="Internal">
<package pattern="MyCompany.*" />
</packageSource>
<packageSource key="nuget.org">
<package pattern="*" />
</packageSource>
</packageSourceMapping>
<packageSourceCredentials>
<Internal>
</Internal>
</packageSourceCredentials>
</configuration>
复制代码
这个文件用于第一次使用时下载库,这个文件不必提交到仓库。
下载所有依赖库
mkdir -p ./vendor/public/
dotnet restore --configfile ./NuGet.Config.for.download --packages ./vendor/public/
复制代码
指定配置文件,把所有依赖项下载到 /vendor/public/ 目录。
下载好后,把公司内部的库移动到另一个目录:
rm -fdr ./vendor/private/ ; mkdir -p ./vendor/private/ && \
mv ./vendor/public/MyCompany.* ./vendor/private/
复制代码
编译
用于编译的 NuGet.Config 配置
新增一个专门用于 vendor 模式的 NuGet.Config 配置文件,取名为:NuGet.Config.vendor
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
</packageSources>
<packageSourceMapping>
<packageSource key="Internal">
<package pattern="MyCompany.*" />
</packageSource>
<packageSource key="nuget.org">
<package pattern="*" />
</packageSource>
</packageSourceMapping>
</configuration>
复制代码
基于 vendor 目录的 restore
dotnet restore --configfile ./NuGet.Config.vendor -r linux-x64
复制代码
编译
dotnet publish MyProj.csproj \
--no-restore \
-c Debug -r linux-x64 \
-o ./build/linux/amd64/
复制代码
最关键的参数是 --no-restore
docker 中编译
docker run --rm \
--platform linux/amd64 \
-v "./":/src \
-w /src/ \
mcr.microsoft.com/dotnet/sdk:8.0 \
bash -c ' \
dotnet restore --configfile ./NuGet.Config.vendor -r linux-x64 && \
dotnet publish MyProj.csproj \
--no-restore \
-c Debug -r linux-x64 \
-p:PublishAot=false \
-p:PublishSingleFile=false \
-p:IncludeNativeLibrariesForSelfExtract=true \
-p:EnableCompressionInSingleFile=true \
-p:GenerateDocumentationFile=false \
-p:StripSymbols=false \
-p:DebugType=portable \
-p:DebugSymbols=true \
-p:EmbedUntrackedSources=true \
-p:EmbedAllSources=true \
-p:ContinuousIntegrationBuild=true \
-p:Optimize=false \
-o /src/build/linux/amd64/ \
'
复制代码
提交到 git
.gitignore 文件中增加一些配置:
NuGet.Config.for.download # 用于下载的文件,不提交到仓库,里面有密码
/vendor/public/ # public 文件太多了,不提交到仓库
!/vendor/private/ # 说明这个目录一定要提交
!/vendor/private/**/*nupkg # .nupkg 类型的文件一定要提交
复制代码
好了,在别的环境 git clone 后,使用上述提到的编译命令行就可以编译了。
希望对你有用, Have fun.
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
何在
DotNet
使用
类似
golang
相关帖子
使用语义化版本管理工程:告别版本混乱
ai使用分享
如何使用 LiteLLM 网关代理统一管理你的大模型
SQLAlchemy中使用UPSERT
【项目实践】使用GNS3模拟三层架构中小型企业组网
【翻译】MAUI 的.NET 11预览版:使用内联C#表达式简化XAML
ZoomIt的使用与快捷键
使用 pkgutil 实现动态插件系统
使用pyside6编写简单的串口上位机
Xray的安装与使用
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
使用语义化版本管理工程:告别版本混乱
1
521
石娅凉
2026-02-27
业界
ai使用分享
1
937
任静柔
2026-02-27
业界
如何使用 LiteLLM 网关代理统一管理你的大模型
0
693
捡嫌
2026-02-27
业界
SQLAlchemy中使用UPSERT
0
264
侧胥咽
2026-02-28
安全
【项目实践】使用GNS3模拟三层架构中小型企业组网
0
11
嫁吱裨
2026-02-28
业界
【翻译】MAUI 的.NET 11预览版:使用内联C#表达式简化XAML
1
567
全跺俚
2026-03-01
业界
ZoomIt的使用与快捷键
0
753
坟菊
2026-03-02
业界
使用 pkgutil 实现动态插件系统
0
254
晚能
2026-03-02
安全
使用pyside6编写简单的串口上位机
0
258
蚣澡
2026-03-02
业界
Xray的安装与使用
0
130
乐敬
2026-03-03
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
业界
签约作者
程序园优秀签约作者
发帖
乳杂丫
昨天 19:15
关注
0
粉丝关注
16
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991125
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
宋子
9888
6
韶又彤
9910
7
闰咄阅
9993
8
刎唇
9995
9
蓬森莉
9873
10
遗憩
10006
查看更多
今日好文热榜
323
【医疗项目实战】借助LightningChart Pytho
778
在Mac安装阿里巴巴新神器copaw
631
厉害的网安人才都学什么?
283
海外仓一件代发是什么意思?搞懂概念,避开
552
厉害的网安人才都学什么?
527
世界之巅的问候:RF RACER 成功登顶珠穆朗
421
图片加水印怎么弄?推荐一个免费在线水印工
111
Web打点中的权限维持思路
152
.NET 开源工作流:Slickflow 流程自动化运
129
Xray的安装与使用
760
AI的降维打击
891
nRF54L15 NRF54L15-QFAA-R 多协议低功耗BLE
901
RAID10和RAID5性能对比测试
435
Cloudpods Baremetal - 裸金属自动化
869
高光谱成像(二)光谱角映射 SAM
14
用六边形架构与整洁架构对比是伪命题?
129
ClaimsPrincipal序列化为Json的正确姿势
69
【节点】[MetalReflectance节点]原理解析与
73
强化学习算法-2:熵坍缩以及奖励坍缩问题机
253
Linux 一线必备:高能 Shell 脚本,让工作