用Nuget部署程序包

Nuget是.NET程序包管理工具(类似linux下的npm等),程序员可直接用简单的命令行(或VS)下载包。好处:

(1)避免类库版本不一致带来的问题。GitHub是管理源代码的,这个是管理生成的类库/包的。

(2)可自动处理类库依赖:

(3)可指定下载历史版本: install-package name –version 1.0.2

(4)可部署私有包服务器: https://docs.microsoft.com/en-us/nuget/hosting-packages/overview

1.    注册账号

http://www.nuget.org

可用微软账户登录注册

2.    生成ApiKey

(1)       这个key最多只能用一年。超出了怎么办?不知道有没有续期措施。

(2)       Glob pattern:匹配模式,用户搜索时用的?

3.    发布包方案一:使用命令行

(1)       去官网下载Nuget.exe:

https://www.nuget.org/downloads

VS 2017已经内置了,但不知道怎么在VS内部运行nuget命令

(2)       在项目目录下运行命令:

nuget setApiKey xxxxxxxxx-5a3c-4a67-b969-3cda4f074341

nuget spec, 生成并编辑 .nuspec 文件(是包的配置信息)

nuget pack xxx.csproj, 生成 .nupkg 文件(包)

nuget push xxx.1.0.x.nupkg, 发布

4.    发布包方案二:使用NuGetPackageExplorer

参考:https://github.com/NuGetPackageExplorer/NuGetPackageExplorer

(1)安装并运行:Microsoft Store > NuGet Package Explorer

(2)新建包 > 添加文件夹/文件

可添加的目录类别包括:

build

输出到bin目录

content

原样拷贝

lib

添加到引用

src

源码拷贝

tools

(3)发布,填写入你的key

5.    安装测试

在vs>工具>Nuget包管理器>管理解决方案的Nuget程序包>浏览:

或者直接在程序包管理器控制台中用命令行

Install-package packageName

部署后自动将引用、资源、配置等自动发布到新程序。

注意,包发布后有时延。

6.    其它

(1)     指定依赖的.NET类库版本

(2)     限制可下载的版本

(3)     引用类库

(4)     修改.config文件

在Content目录下包含app.config.transform 或 web.config.transform 文件。

https://docs.microsoft.com/zh-cn/nuget/create-packages/source-and-config-file-transformations

(5)     新增文件

在Content目录下放置代码文件,并附加.pp扩展名。如:

content\Model\ContosoData.cs.pp

代码中可用$token$放置一些变量(https://msdn.microsoft.com/library/vslangproj.projectproperties_properties.aspx

namespace $rootnamespace$.Models

{

public struct CategoryInfo

{

public string categoryid;

public string description;

public string htmlUrl;

public string rssUrl;

public string title;

}

}

(6)     部署到 bin 目录下

(7)     部署自己的Nuget服务器

https://github.com/NuGet/NuGetGallery#build-and-run-the-gallery-in-arbitrary-number-easy-steps

https://docs.microsoft.com/zh-cn/nuget/hosting-packages/nuget-server

用Nuget部署程序包的更多相关文章

  1. nuget push 程序包到nuget服务器时报错 406 (Not Acceptable)

    1.在window服务器上部署nuget服务器时,发布包时出现请求报错 406 (Not Acceptable) 验证用户名.密码正确的情况下,还是出现上面错误.后面跟踪服务器日志,发现window\ ...

  2. Visual Studio 连接不上NuGet 官方程序包源的解决办法

    修改dns 即可

  3. NuGet管理和还原程序包

    在很多开源的程序下载下来不能使用,一般都是平台X86 和X64没有修改,还一个就是程序缺少资源包文件.用Nuget还原即可: 一般建议先修改好平台,然后用NuGet还原程序包.

  4. NuGet -- 使用控制台管理程序包

    为什么要使用控制台管理程序包而不使用程序包管理窗口?原因大家都懂,生活压力这么大,一切都只是为了装一波.开个玩笑,当然不只是此原因,在有些情况下,有些操作使用程序包管理窗口不能达到目的,只能使用控制台 ...

  5. .Net Core 在Linux服务器下部署程序--(4). 前端ReactWeb应用部署

    确认第二步中的软件已经安装完成 Nodejs前端Web服务器 Zip与UnZip压缩包软禁 nrm前端包源管理器 PM2前端Web程序守护进程 创建部署文件夹 如果已经执行过( 3. 租户平台后端程序 ...

  6. Nuget,程序员的功能包

    导读:随着信息技术的发展,资源的共享已经成为一种文化.对于程序设计来说,我们在编写软件的时候,总有那么一些公共使用的东西,或者说需啊哟使用到别人可能已经做得很好的东西.这个时候,再去重写,并不是一个明 ...

  7. 用命令行工具创建 NuGet 程序包

    NuGet.exe 下载地址 本文翻译自: https://docs.nuget.org/Create/Creating-and-Publishing-a-Package https://docs.n ...

  8. 这台计算机上缺少此项目引用的 NuGet 程序包-缺少的文件是 ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props

    异常处理汇总-开发工具  http://www.cnblogs.com/dunitian/p/4522988.html 协助开发里面总有几个是极简爱好者,但是呢删了不该删的就会影响项目开发,下面看下完 ...

  9. NuGet程序包安装SQLite后完全抽离出SQLite之入门介绍及注意事项,你真的懂了吗?

    前言 近几天的几篇文章讲的内容非前面内容如系列的讲解,这几天文章都是我在项目中遇到的问题以及重新学习的知识,所以和大家分享一下,关于SQLite的文章多如牛毛,但是有些大多已经过时,为什么说过时,之前 ...

随机推荐

  1. js中return false; jquery中需要这样写:return false(); Jquery 中循环 each的用法 for循环

    js中return false; jquery中需要这样写:return false(); Jquery 中循环 each的用法 $(".progressName").each(f ...

  2. MySQL错误码

    MySQL运行异常时,查看服务日志可看到error number,该错误码为系统调用出错码,具体如下. errno.00 is: Success    成功 errno.01 is: Operatio ...

  3. 2018-2019-1 20189210 《LInux内核原理与分析》第五周作业

    一.系统调用实验 1.库函数将系统调用封装起来,大多数程序员使用库函数进行系统调用. 2.Linux操作系统的体系架构分为用户态和内核态.CPU的执行级别对应的就是内核态,所有指令都可以执行.用户态对 ...

  4. Web版记账本开发记录(二)开发过程遇到的问题小结1 对数据库的区间查询

    问题1 对数据库的区间查询 如功能显示,想要按照年份和月份查询相应的记录,就要使用区间查询 对应的代码如下 servlet层的ChaXun java.sql.Date sDate = new java ...

  5. 太原面经分享:如何用js实现返回斐波那契数列的第n个值的函数

    面试攒经验,let's go! 值此高考来临之际,闲不住的我又双叒叕出发去面试攒经验了,去了公司交待一番流程后,面试官甩给了我一张A4纸,上面写着一道js算法笔试题(一开始我并不知道这是在考察js算法 ...

  6. swust oj 984

    利用二叉树中序及先序遍历确定该二叉树的后序序列 1000(ms) 10000(kb) 2754 / 5599 已知二叉树的中序和先序遍历可以唯一确定后序遍历.已知中序和后序遍历可以唯一确定先序遍历,但 ...

  7. 实现全选、全不选功能 JQuery

    <input type="checkbox" name="" id="checkAllChange" value="&quo ...

  8. javascript的数组之push()

    push()方法讲一个元素或多个元素添加到数组的末尾,并返回新数组的长度length,修改数组自身. var numbers = [1, 2, 3]; numbers.push(4); console ...

  9. 【Python基础】lpthw - Exercise 45 制作游戏

    作者在本节中给出了 一些风格建议. 一.函数的风格 1. 类里面的函数经常被称作“方法”,但实质上它和函数没什么不同. 2. 使用类的时候,可以用动词而不是名词给函数命名,指明其具体功能,例如list ...

  10. loj2083 优秀的拆分 [NOI2016] SA

    正解:SA 解题报告: 我永远喜欢loj! 显然$AABB$串相当于是由两个$AA$串拼起来的,所以可以先考虑如果求出来了所有$AA$串怎么求答案? 就假如能统计出$st[i]$表示所有以$i$为开头 ...