HTML5技术

搭建公司内部的NuGet Server - 改變世界

字号+ 作者:H5之家 来源:博客园 2016-04-11 15:00 我要评论( )

随着公司业务慢慢的拓展,项目便会越来越来多,很多项目会依赖其他项目DLL,比如一些底层的技术框架DLL引用,还有各业务系统的也有可能会有引用的可能。 项目多,交叉引用多,如果要是有一个DLL更新,那就要更新所有引用该DLL的项目,手动更新的话,有时候找

     随着公司业务慢慢的拓展,项目便会越来越来多,很多项目会依赖其他项目DLL,比如一些底层的技术框架DLL引用,还有各业务系统的也有可能会有引用的可能。

项目多,交叉引用多,如果要是有一个DLL更新,那就要更新所有引用该DLL的项目,手动更新的话,有时候找到都很困难,更别说更新了,长此以往,更新DLL会变得很困难,那有什么办法来解决这个问题 ? 

     对NuGet,话说微软真是为广大用户着想,整出这么个好东西。我估计微软内部DLL也乱得不像样子,然后才有NuGet 这个产物。NuGet 管理程序包工具,Visual Studio 2012&2013 完全集成了这套工具。

     但是今天讲的是如何在公司内部搭建NuGet Server,来管理公司内部程序包。使内部程序包引用容易,更新版本容易。废话就不多说了,直接入正题。

     搭建NuGet Server 是不是建一个Web站点一样,然后挂在IIS上面? 对的,就是这么回事,建一个网站,管理程序包,能够上传,能够下载,且能够做简单版本管理。

 我要说的是,站点确实要建,但是怎么管理程序包,上传,下载也好等,大家不要担心这些都有人已经做好了,只要拿来使用就可以了。接下来搞真的了。

一. NuGetServer 搭建和配置

1. 创建一个 “NuGetServerSolution” 解决方案,然后新增 “NuGetServer” Asp.Net 网站 或者 应用程序 空 项目。结构如下图

2. 在 “NuGetServer” 项目上,右键选择 “管理NuGet程序包” ,选择 “联机” ,右上角搜索框中输入“NuGet.Server”  Enter,在搜索结果中选择 NuGet.Server 项,进行安装,如图

如果安装最后,提示 替换 Web.config ,请选择 全是。

3. 编译“NuGetServer”项目,如果没有出异常,这里就创建项目完成,NuGetServer 就这么简单建成,稍后我部署到IIS上面,看看是不是真的可以了,先来讲一下这个网站WebConfig 要配置地方。

For more information on how to configure your ASP.NET application, please visit ?LinkId=169433 Determines if an Api Key is required to push\delete packages from the server. Set the value here to allow people to push/delete packages from the server. NOTE: This is a shared key (password) for all users. Change the path to the packages folder. Default is ~/Packages. This can be a virtual or physical path. Set allowOverrideExistingPackageOnPush to false to mimic NuGet.org's behaviour (do not allow overwriting packages with same id + version). Set ignoreSymbolsPackages to true to filter out symbols packages. Since NuGet.Server does not come with a symbol server, it makes sense to ignore this type of packages. When enabled, files named `.symbols.nupkg` or packages containing a `/src` folder will be ignored. If you only push .symbols.nupkg packages, set this to false so that packages can be uploaded. Set enableDelisting to true to enable delist instead of delete as a result of a "nuget delete" command. - delete: package is deleted from the repository's local filesystem. - delist: - "nuget delete": the "hidden" file attribute of the corresponding nupkg on the repository local filesystem is turned on instead of deleting the file. - "nuget list" skips delisted packages, i.e. those that have the hidden attribute set on their nupkg. - "nuget install packageid -version version" command will succeed for both listed and delisted packages. e.g. delisted packages can still be downloaded by clients that explicitly specify their version. Set enableFrameworkFiltering to true to enable filtering packages by their supported frameworks during search. When running NuGet.Server in a NAT network, ASP.NET may embed the erver's internal IP address in the V2 feed. Uncomment the following configuration entry to enable NAT support.

第一点: 程序包发布,存放的路径,在WebConfig appSettings PackagesPath 这个Key 设置,默认存放在部署的网站根目录Packages文件夹。

第二点:appSettings requireApiKey 这个key 如果设置成 true , appSettings  apiKey 是必须要设置的,这个就像密码一样。可以阻止不知道这个apiKey人访问到程序包

4. 部署到IIS, 打开IIS ,右键选择  “网站”  ,添加网站,填写 网站名称(NuGetServer),选择物理路径,端口号 改成 "1000" 确定, 如下图

5. 运行 NuGetServer 网站 "http://localhost:1000/", 出现下图效果,则说NuGet 服务器 已经建立完成。

6. 接着配置Visual Studio 连接 NuGetServer。选择“工具”菜单,选择“选项”,弹出“选项”界面,选择 “NuGet Package Manager” ,然后在选择 “程序包源”,

点击 “+”,在界面下方 设置 名称 “mynuget.org” 随便取,设置 源 “:1000/nuget” (是不是上图有说),确定 关闭界面,回到项目。如下图

在项目右键,选择“管理NuGet程序包”,联机,下面是不是多出了一个 “mynuget.org” 程序源呢,虽然下面还没有发布公司内部的程序包。如下图

到此,NuGetServer 服务器,就搭建并配置完成。接一下来就是如何发布程序包,以及安装程序包了。

二. 发布程序包,以及安装程序包

1. NuGet Package Explorer

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 用惯了Task,你应该也需要了解它的内部调度机制TaskScheduler - 一线码农

    用惯了Task,你应该也需要了解它的内部调度机制TaskScheduler - 一线

    2017-04-29 10:01

  • vue2.0版cnode社区项目搭建及实战开发 - sandisen

    vue2.0版cnode社区项目搭建及实战开发 - sandisen

    2017-04-20 14:00

  • net.sz.framework 框架 轻松搭建服务---让你更专注逻辑功能---初探 - 失足程序员

    net.sz.framework 框架 轻松搭建服务---让你更专注逻辑功能---初探 -

    2017-04-02 10:11

  • Ionic2 开发笔记(1)ionic2 +angular2搭建 - 早上~得~喝粥

    Ionic2 开发笔记(1)ionic2 +angular2搭建 - 早上~得~喝粥

    2017-03-13 16:00

网友点评
e