架设内部 NuGet Server 的两三事 (01)

由于工作项目越拆越多,有些项目参考来参考去很讨厌。

开一个 Solution 包了好几个 Project 再加上如果你装了 Resharper 就会开始怀疑要不要换电脑了?

让我们把一些共用且耦合性较低的东西包出去当作 Package 用 NuGet 去管理吧!

Private NuGet Server 架设有许多选择 - Hosting your own NuGet feeds

最后选择了 ProGet from Inedo,Free License 已经很够用了。( License 比较 )

并且记录下我在架设 Server 遇到的麻烦。


在安装上我是参考以下两篇文章。

将 NuGet Package 发行至 ProGet

ProGet - 架设内部 NuGet Server

下一步就是跟公司单位要 Server 与空间就可以开始架啰!

很不幸地要到了一个很诡异的配置 : C: 40GB D: 200GB

在安装完 ProGet 及设定完 NuGet Feed 后你会得到一个放置 package 位置。

虽然可以在设定内修改但是官方并不建议操作,因为它如果要整个系统备份移转的时候会无法取得正确的 packages。

mklink

利用此命令去创建虚拟数据夹链接目录。

这样在上传 packages 时可以不会去真的占用 C: 空间。

mklink /d C:ProgramDataProGetPackages.nugetv2F1 D:ProgramDataProGetPackages.nugetv2F1
ProGet 限制匿名使用者与设置 API Keys

接下来要限制匿名使用者不能随意地到我们架设好的 NuGet Server 下载 packages。

Tasks 中的 Add Permission 移除 Anonymous 加入一个群组或是使用者去限制身份。

并建立一个 API Keys 允许存取 Feed API。

建立 NuGet.config 至开发项目的版控

在团队开发中可能会将这个配置文件加入至版控中使大家保存 packages 的位置一致。

当然我们也可以在当中去设置节点去读取我们架设的私人 NuGet Server。

比较要注意的是 内的 value 必须是加密后 与 的 Username/ClearTextPassword 不需要加密。

这样团队成员取最新后在 Visual Studio IDE 针对项目 Nuget Package Manager 应该就能正常访问私人 NuGet Server 并可以下载 packages。

下一篇将会介绍如何将 Project pack (打包) / push (上传) 整合至 CI Server 上做一个完整的自动化流程。

Data Source

Configuring NuGet behavior

NuGet.Config 参考

支持多个 .NET Framework 版本

Package: NuGet

规格命令 (NuGet CLI)

组件命令 (NuGet CLI)