登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
如何在 DotNet 中使用类似 golang 的 vendor 的编译模式 ...
如何在 DotNet 中使用类似 golang 的 vendor 的编译模式
[ 复制链接 ]
乳杂丫
2026-3-2 19:15:03
程序园永久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
相关帖子
使用pyside6编写简单的串口上位机
Xray的安装与使用
一款使用 C# 编写专为 Windows 11 打造的文件资源管理器增强工具!
Windows系统安装OpenClaw并使用Qwen千问接入飞书教程
Copilot 命令行使用方式介绍(npm)
OpenClaw 智能体本地部署和使用并与飞书连接
关于我使用MinMix创建了一个Tailwindcss学习网站
uni-app使用瓦片实现离线地图的两种方案
使用Milvus搭配Ollama搭建RAG知识库
使用 C++ 模拟 ShaderLanguage 的 swizzle
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
使用pyside6编写简单的串口上位机
2
282
蚣澡
2026-03-02
业界
Xray的安装与使用
2
152
乐敬
2026-03-03
业界
一款使用 C# 编写专为 Windows 11 打造的文件资源管理器增强工具!
3
649
阴昭昭
2026-03-03
业界
Windows系统安装OpenClaw并使用Qwen千问接入飞书教程
1
100
吉娅寿
2026-03-04
业界
Copilot 命令行使用方式介绍(npm)
0
266
冈欤寨
2026-03-05
安全
OpenClaw 智能体本地部署和使用并与飞书连接
1
406
蔓好
2026-03-06
业界
关于我使用MinMix创建了一个Tailwindcss学习网站
2
246
赶塑坠
2026-03-06
安全
uni-app使用瓦片实现离线地图的两种方案
1
382
唐嘉懿
2026-03-07
业界
使用Milvus搭配Ollama搭建RAG知识库
0
67
绂染
2026-03-08
业界
使用 C++ 模拟 ShaderLanguage 的 swizzle
0
479
届表
2026-03-10
回复
(2)
普料飕
6 天前
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
过来提前占个楼
毁抨句
3 天前
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
懂技术并乐意极积无私分享的人越来越少。珍惜
米嘉怡
3 天前
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
谢谢分享,试用一下
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
业界
签约作者
程序园优秀签约作者
发帖
乳杂丫
3 天前
关注
0
粉丝关注
16
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991125
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
韶又彤
9912
6
宋子
9880
7
闰咄阅
9993
8
刎唇
9995
9
蓬森莉
9869
10
遗憩
10006
查看更多
今日好文热榜
211
3分钟搞懂深度学习AI:实操篇:池化层
30
Gemini 3.1 Flash-Lite 正式上线:专为规模
246
【OpenClaw】博查搜索 Skill 正式上线|中
341
FastAPI + PostgreSQL 实战:从入门到不踩
685
MAUI 嵌入式 Web 架构实战(七) 构建设备
906
AI时代,程序员都应该是需求描述工程师
234
openclaw平替之nanobot源码解析(二):age
828
当纺织机轰鸣而来——一个数字时代“纺织女
479
空论与时论
217
搭建数据库服务高可用架构
287
2026卫生高级职称备考:卫生高级职称考试历
30
公司新招了个 5 年 Java,开工第一天就被劝
333
opencalw平替之nanobot 源码解析(一):环
983
【节点】[SceneDepth节点]原理解析与实际应
419
【节点】[SceneDepth节点]原理解析与实际应
758
"给我发个200元红包":一条群消息背后的 AI
479
使用 C++ 模拟 ShaderLanguage 的 swizzle
71
006:RAG 入门-面试官问你,RAG 为什么要切
291
Stanford-CS336-Lecture-02 Pytorch
328
【FAQ】HarmonyOS SDK 闭源开放能力 —Push