[译]Nuget.Server
NuGet.Server是一个包,可用于使一个ASP.NET应用host一个package feed 。
- 使用VS创建一个新的空WEB应用,添加
Nuget.Server包。 - 配置应用的Packages文件夹,添加包。
- 部署应用到服务器上。
创建部署Nuget.Server ASP.NET应用
- 在VS中选择File > New > Project, 搜索"ASP.NET",选择ASP.NET Web Application (.NET Framework),设置Framework为".NET Framework 4.6":

- 给应用起一个合适的名字,点击OK,在下面的对话框中选择空白模板,点击OK。
- 右键项目,选择Manage NuGet Packages。
- 在包管理器界面中,选择Browse选项,搜索安装最新版本的Nuget.Server包。 (还可在包控制台使用
Install-Pacakge Nuget.Server安装Nuget.Server包。) - 安装Nuget.Server会将空白的web应用转换成了一个package source。它安装了一起其他的包,在web应用的根目录创建了
Packages文件夹,修改了web.config加上了一些配置。
安装完Nuget.Server后,我们要检查下web.config文件。Nuget.Server可能没有覆盖已经存在于web.config中的元素,而是重复的创建了一个。这可能导致服务器内部错误"Internal Server Error" 。例如如果在安装Nuget.Server之前,你的web.config已经包含了
<compilation debug="true" targetFramework="4.5.2" />,那么安装完Nuget.Server后,会多出一个<compilation debug="true" targetFramework="4.6" />。这时,你需要删除老版本的。
- 将要加入的包的 xxx.nupkg文件放到Packages文件夹下面,并将这些.nupkg文件的Build Action设为Content,将Copy to Output Directory设为Copy always:

- 按Ctrl+F5启动网站。首页上会提供package feed URL。如果出现错误,检查web.config去除重复元素。

- 点击上图中的here超级链接,可查看已安装的包。
- The first time you run the application, NuGet.Server restructures the Packages folder to contain a folder for each package. This matches the local storage layout introduced with NuGet 3.3 to improve performance. When adding more packages, continue to follow this structure.
- 一旦本地部署成功了,可以将应用发布到内部或者外部的服务器上。
- 一旦部署到了
http://<domain>,对应的package source的url为http://<domain>/nuget
配置Packages文件夹
在Nuget.Server 1.5 之后,可以在web.config中的 appSetting/packagesPath来指定package文件夹:
<appSettings>
<!-- Set the value here to specify your custom packages folder. -->
<add key="packagesPath" value="C:\MyPackages" />
</appSettings>
packagesPath可以是绝对路径也可以是相对路径。
当packagesPath没有设置或者其值为空白,那么默认的包文件夹为~/Packages。
添加package
一旦Nuget.Server应用运行起来了,可以使用nuget push添加包。
安装完Nuget.Server,web.config会有一个appSetting/apiKey:
<appSettings>
<add key="apiKey" value="" />
</appSettings>
当没有apiKey或者其值为空的时候,push package到feed是禁用的。
设置apiKey并添加appSettings/requireApiKey设置其值为true:
<appSettings>
<!-- Sets whether an API Key is required to push/delete packages -->
<add key="requireApiKey" value="true" />
<!-- Set a shared password (for all users) to push/delete packages -->
<add key="apiKey" value="" />
</appSettings>
可以设置requireApiKey为false。这样所有的人都可以push package了。
删除package
使用nuget delete命令从仓储中删除package。
可以设置web.config中的enableDelisting为true启用delist。
[译]Nuget.Server的更多相关文章
- 搭建公司内部的NuGet Server
随着公司业务慢慢的拓展,项目便会越来越来多,很多项目会依赖其他项目DLL,比如一些底层的技术框架DLL引用,还有各业务系统的也有可能会有引用的可能. 项目多,交叉引用多,如果要是有一个DLL更新,那就 ...
- 分析nuget源码,用nuget + nuget.server实现winform程序的自动更新
源起 (个人理解)包管理最开始应该是从java平台下的maven开始吧,因为java的开发大多数是基于开源组件开发的,一个开源包在使用时很可能要去依赖其他的开源包,而且必须是特定的版本才可以.以往在找 ...
- Nuget Server 搭建
每个女人都有很多包包:其实男人也有,但只有会写程序的男人才有 -- 代码世界中的大"包"小"包".这些大包小包,有花钱买的,有从开源市场淘的,也有自己或同事亲手 ...
- nuget.server搭建及实际测试
1.背景 由于所做项目越来越多,会积累一些公用组件,而每个项目中组件引用中如果组件有更新或者新增为了方便需要一个专门的工具进行管理,那么nuget就是不错的选择. 2.安装nuget.server 这 ...
- .NET持续集成与自动化部署之路第二篇——使用NuGet.Server搭建公司内部的Nuget(包)管理器
使用NuGet.Server搭建公司内部的Nuget(包)管理器 前言 Nuget是一个.NET平台下的开源的项目,它是Visual Studio的扩展.在使用Visual Studio开发基 ...
- 搭建Nuget.Server push时,"Failed to process request. 'Method Not Allowed'"
环境: windows server 2012,已经安装web dev工具. nuget.server版本2.11 输入网站地址正常访问: VS也能正常添加,nuget服务,在项目打包后上传服务器时报 ...
- 使用Docker 快速搭建nuget本地服务器,Hosting private nuget server using docker in seconds!
Server #below line automatically creates the folder, mount the volumes and maps the ports. docker ru ...
- Nuget server on IIS6 returns 404
Nuget server on IIS6 returns 404 when downloading package after upgrade 2011年9月2日 8:03:30 (GMT Dayli ...
- Nuget Server的搭建及实践之旅
一. 背景 在做的一个项目使用的是Asp.Net MVC,由于缺少规范与约束,团队成员在使用类库各自为政,时常出现路径和版本不一致的问题.在一个同事建议下,开始尝试使用Nuget 管理项目或公司使用的 ...
随机推荐
- TCP/UDP区别
一:1. 大体上来说,TCP和UDP都是通过Internet发送数据包的协议.都建立在Internet协议上.就是无论你是用TCP协议还是用UDP协议发送数据包,都会被发送到IP地址: 2.数据包的处 ...
- python装饰器中的计时器thd.strat用法
thd = KThread(target=_new_func, args=(), kwargs=new_kwargs) thd.start() thd.join(seconds) alive = th ...
- 译:Spring Boot 自动伸缩
原文链接:https://dzone.com/articles/spring-boot-autoscaler 作者:Piotr Mińkowski 译者:helloworldtang 自动伸缩是每个人 ...
- apache StringUtils 工具类
// org.apache.commons.lang3.StringUtils // 1.IsEmpty/IsBlank - checks if a String contains text 检查是否 ...
- jquery $().each,$.each的区别
在jquery中,遍历对象和数组,经常会用到$().each和$.each(),两个方法. 两个方法是有区别的,从而这两个方法在针对不同的操作上,显示了各自的特点. 一,$().each $().ea ...
- A1099. Build A Binary Search Tree
A Binary Search Tree (BST) is recursively defined as a binary tree which has the following propertie ...
- JavaScript深入之变量对象
前言 在上篇<javascript深入之执行上下文栈>中讲到,当javascript代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution ...
- 第二十九篇-Fragment动态用法
效果图: 上节学习了静态添加Fragment的方法,这节学习动态添加方法. 主页面 layout.xml Fragment页面 layout2.xml 实现功能,当点击主页面的button时,将Fra ...
- pytest 6 生成html报告
前言:pytest-HTML是一个插件,pytest用于生成测试结果的HTML报告.兼容Python 2.7,3.6 1.github上源码地址[https://github.com/pytest-d ...
- Redis的主从复制的原理介绍
redis主从复制 和Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或 ...