设置 Nuget 本地源、在线私有源、自动构建打包
设置 Nuget 本地源、在线私有源、自动构建打包
- 本文演示如果在项目中生成 Nuget 包,并添加 Nuget 本地源,不用发布到 Nuget 服务器。再附带使用在线私有源的简单方法,以及提交代码自动拉取构建
- 本文用项目NewLifeX/X打包为 Nuget 包,项目NewLife.Cube测试
打包 nuget 包
项目右键属性-打包即可,执行之后会生成并打包,生成的 NuGet 包属性可以在项目属性面板的
打包一项设置,设置版本号、包描述、作者信息等注意,打包操作相当于生成,也就是说生成过但是没打包,此时打包并不会生成新的 Nuget 包,需要全部删除输出目录,重新打包

得到 nuget 包

设置 Nuget 源
- 打包之后需要设置一下 Nuget 源,让工具知道还原的时候用哪个源
- 项目右键属性-管理 Nuget 程序包-打开右边设置图标进入设置。从截图可以看到,如果是设置好包源的情况,两个包都提示可以升级,并且是刚刚生成的新版本,箭头旁边的下拉框对应的就是刚刚的包地址,即本地路径

- 添加本地目录作为 Nuget 源,直接填本机目录。依次打开选项中的 Nuget 包管理器-程序包源-绿色的加号-底下填名称-点击三个点按钮选择本地路径-更新-确定

- 经过以上设置,Nuget 包管理界面右边的下拉框就会出现刚刚设置的包源,选择刚刚设置的那个,在浏览选项卡就能看到只有这两个包
团队共享设置
- 上面设置的路径是某台电脑上的,另一台电脑对应地址又可能不一样,那么如何使用同一个设置,并且不用每个人都添加一次 Nuget 源呢?答案就是
Nuget.config以及相对地址 - 首先是
Nuget.config,在 VS 打开项目的时候,会自动加载里面的设置,自动添加源,只在本项目有效,并不是全局的。然后包地址设置为相对地址,相对于解决方案所在目录,两个项目均处于同一目录即可。本文的两个项目输出目录均为解决方案所在目录的上一目录

- 在解决方案目录新建文件
Nuget.config,填写以下内容

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="本地X组件" value="../Bin" />
</packageSources>
</configuration>
- 可以看到,相对目录被识别为正确的地址,这样就可以达到所有人共用此设置的目的,
Nuget.config的源排第一位,还原时优先从本地源查找还原

在线私有源
- Nuget 官方提供了NuGet.Server,可自行搭建自己的 Nuget 服务器,
- 这里使用BaGet,使用 Docker 快速搭建一个 Nuget 服务器
- 以 ubuntu 服务器为例,在当前目录新建
baget.env文件,填写如下内容,注意 ApiKey,push 包的时候会用到
ApiKey=NUGET-SERVER-API-KEY
Storage__Type=FileSystem
Storage__Path=/var/baget/packages
Database__Type=Sqlite
Database__ConnectionString=Data Source=/var/baget/baget.db
Search__Type=Database
- 然后运行容器
docker run --rm --name nuget-server -p 5555:80 --env-file baget.env -v "$(pwd)/baget-data:/var/baget" loicsharma/baget:latest - 一切 ok 后就可以推送 Nuget 包了,
dotnet nuget push -s http://localhost:5555/v3/index.json -k NUGET-SERVER-API-KEY newtonsoft.json.11.0.2.nupkg,注意推送地址以及 ApiKey,包名的话,一般懒得打可以用*.nupkg
在线自动构建 Nuget 包并发布-myget
- 使用myget,可以设置自动拉取源码,自动构建 Nuget 包,并且可以 push 到 nuget.org,所以可以用 myget 来测试
- 新建 feed

- 设置构建服务。如果点击之后没啥反应,没有弹窗或者只有黑色的遮罩,这可能是浏览器不兼容,换个浏览器(这里就是谷歌浏览器有问题,其它比如火狐没事。当然也可以打开控制台复制那个弹窗地址手动打开)

- 注意第一个设置,勾选之后,自动注册 web hook 每次提交触发构建服务

- 点击 build 开始第一次构建,点击 edit 可进行更多设置,设置包含源码、生成版本号的规则等

- 如果构建成功,点击一个包,即可看到安装方法,包源为
https://www.myget.org/F/{你的feed名}/api/v3/index.json
总结
- 本文记录了这些 Nuget 包打包发布步骤,帮助还不知道这些方法但又想尝试的同学
- 方法多样,总有适合自己的,最适合团队的才是最好的。
设置 Nuget 本地源、在线私有源、自动构建打包的更多相关文章
- Debian8 从本地源安装软件
假如你从Debian官网下载了三个DVD镜像,那么就可以设置从本地源来安装软件,例如这里我从官网下载了 debian-8.6.0-amd64-DVD-1.iso,debian-8.6.0-amd64- ...
- 分析nuget源码,用nuget + nuget.server实现winform程序的自动更新
源起 (个人理解)包管理最开始应该是从java平台下的maven开始吧,因为java的开发大多数是基于开源组件开发的,一个开源包在使用时很可能要去依赖其他的开源包,而且必须是特定的版本才可以.以往在找 ...
- 搭建yum本地源_阿里云CentOS服务器初始化设置
CentOS服务器初始化设置其实不分阿里云或其它服务器了,操作配置过程与步骤也差不多一.挂载硬盘 1.磁盘分区 fdisk -l #查看设备,一般可以看到设备名为/dev/xvdb fdisk /de ...
- NUGET源不存在,安装Nuget包提示“本地源不存在”
困扰了两天的问题,终于找到原因了.因此来这里记录一下~ 前两天写项目时,要从NUGET上安装个第三方库,但不管是从可视化的管理器还是管理器控制台安装,都提示“本地源‘*******’不存在”.然后到网 ...
- 创建NuGet本地包源
NuGet 是免费.开源的包管理开发工具,专注于在 .NET 应用开发过程中,简单地合并第三方的组件库.使用Visual Studio 可以很方便地将类库等项目打包发布,最简单的办法是上传到Nuget ...
- yum设置本地源
创建本地源的文件要放入yum.repos.d目录下,名字随便取,但是后缀要求是.repo 1创建目录 mkdir -p /mnt/cdrom 2虚拟机挂载光盘 mount /dev/cdrom /mn ...
- Visual Studio中设置Nuget程序包源
用vs2015,默认的程序包源是Microsoft and .NET,很多常见的开源包在里面搜索不到. 这时候就需要配置一个更开放的包源,网上搜了一下,都没人提供这个问题,所以自己动脑花了一番脑经,看 ...
- UWP Jenkins + NuGet + MSBuild 手把手教你做自动UWP Build 和 App store包
背景 项目上需要做UWP的自动安装包,在以前的公司接触的是TFS来做自动build. 公司要求用Jenkins来做,别笑话我,之前还真不晓得这个东西. 会的同学请看一下指出错误,不会的同学请先自行脑补 ...
- Gitlab源码库里代码提交后,如何触发jenkins自动构建?
版本库里代码提交后,如何触发jenkins自动构建?这是一个面试题,感觉自己回答的并不好,因为并没有用过这个功能,之前公司实际项目用的是svn版本管理,一般都用立刻构建,和定时任务构建(不管代码是否有 ...
随机推荐
- flask 中文编码解码
process.append("中文") print(process) # return Response(json.dumps(process), mimetype='appli ...
- Previous Permutation
Similar to next permutation, the steps as follow: 1) Find k in the increasing suffix such that nums[ ...
- 校园网ipv6连接问题
没有ipv6的信号:只需要进入网络适配器里面先禁用再启用即可.
- 浅谈Spring中的Quartz配置
浅谈Spring中的Quartz配置 2009-06-26 14:04 樊凯 博客园 字号:T | T Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在 ...
- javascript声明对象时 带var和不带var的区别
2015/11/25补充: 关于变量声明这里有详细的解释: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Stat ...
- 几张图片帮助记忆docker基本原理(转)
写的非常好的一篇文章,不知道为什么被删除了. 利用Google快照,做个存档. 快照地址:地址 作者地址:青牛 什么是dockerDocker 是一个开源项目,诞生于 2013 年初,最初是 dotC ...
- python学习 day1 (3月1日)
01 cpu 内存 硬盘 操作系统 CPU:中央处理器,相当于人大脑. 飞机 内存:临时存储数据. 8g,16g, 高铁 1,成本高. 2,断电即消失. 硬盘:长期存储大量的数据. 1T 512G等等 ...
- 10个相见恨晚的 Java 在线练手项目
10个有意思的Java练手项目: 1.Java 开发简单的计算器 难度为一般,适合具有 Java 基础和 Swing 组件编程知识的用户学习 2.制作一个自己的 Java 编辑器 难度中等,适合 Ja ...
- boost-字符编码转换:使用conv
Windows下的字符集转换可以使用WideCharToMultiByte/ MultiByteToWideChar,Linux下字符集转换可以使用iconv()函数,下面为使用boost的conv来 ...
- Basic Router Architecture
from the book principles and practices of interconnection networks the chapter router architecture ...