NuGet.Server 是由 .NET Foundation 提供的包,其创建的 ASP.NET 应用程序可在运行 IIS 的任何服务器上托管包源。 简而言之,NuGet.Server 通过 HTTP(尤其是 OData)在服务器上提供文件夹。 其设置方法十分简单,最适用于简单的方案。
1. 在 Visual Studio 中创建空的 ASP.NET Web 应用程序并向其添加 NuGet.Server 包。
2. 配置应用程序中的 Packages 文件夹并添加包。
3. 将应用程序部署到适合的客户端。
使用 NuGet.Server 创建和部署 ASP.NET Web 应用程序
1. 在Visual Studio中,选择“新建>文件>”Project,搜索“ASP.NET Web 应用程序 (.NET Framework) ”,选择 C# 的匹配模板。
2. 将“框架”设置为“.NET Framework 4.6” 。
3. 为应用程序提供除 NuGet.Server 之外的合适名称,选择“确定”,在接下来出现的对话框中选择“空”模板,然后选择“确定” 。
4. 右键单击项目,选择“管理 NuGet 包” 。
5. 如果面向 .NET Framework 4.6,请在“包管理器 UI”中,选择“浏览器”选项卡,然后搜索并安装 NuGet.Server 包的最新版本 。 (也可以使用 Install-Package NuGet.Server 从包管理器控制台安装。)如果出现提示,请接受此许可条款。
6. 安装 NuGet.Server 会将空 Web 应用程序转换成包源。 此操作会安装各种其他包,在应用程序中创建 Packages 文件夹,并修改 web.config 以包括其他设置。
7. 在不使用调试或 Ctrl+F5) 的情况下,使用调试>"开始"菜单在本地运行站点Visual Studio (。 主页提供包源 URL,如下所示。 如果发现错误,请仔细检查 web.config 是否有重复元素(如前文所述)。
8. 首次运行应用程序时,NuGet.Server 会重新构建 Packages 文件夹,以包含每个包的文件夹。 这符合 NuGet 3.3 中引入的用于提高性能的本地存储布局。
9. 测试本地部署后,请根据需要将应用程序部署到任何其他内部或外部网站。
10. 部署到 http://<domain> 后,用于包源的 URL 将为 http://<domain>/nuget。
以外部方式向源添加包
NuGet.Server 站点运行后,就可以使用 nuget push 添加包,前提是在 web.config 中设置了 API 密钥值。
安装 NuGet.Server 包后,web.config 包含一个空 appSetting/apiKey 值:
<appSettings>
<add key="apiKey" value="" />
</appSettings>
省略 apiKey 或将其留空时,会禁用向源推送包的功能。
要启用此功能,请设置 apiKey 的值(理想情况下为强密码),并添加值为 true 名为 appSettings/requireApiKey 的密钥:
<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>
如果服务器已受保护或不需要其他 API 密钥(例如,在本地团队网络上使用专用服务器时),可将 requireApiKey 设置为 false。 然后,有权访问服务器的所有用户均可推送包。
从 NuGet.Server 3.0.0 开始,推送包的 URL 更改为 http://<domain>/nuget。 在 3.0.0 版本之前,推送 URL 为 http://<domain>/api/v2/package。
对于 NuGet 3.2.1 和更高版本,除 /nuget 外,默认还会通过启动配置(默认为 NuGetODataConfig.cs)中的 enableLegacyPushRoute: true 选项启用此旧 URL /api/v2/package。 请注意,在同一项目中托管多个源时,此功能不适用。
从源中删除包
使用 NuGet.Server 时,nuget delete 命令会从存储库中删除一个包,但前提是包含 API 密钥和注释。
如果想要改变行为以从列表中删除包(将其保留为可用于包还原),请将 web.config 中的 enableDelisting 键更改为 true。
配置包文件夹
对于 NuGet.Server 1.5 和更高版本,可使用 web.config 中的 appSettings/packagesPath 值自定义包文件夹:
<appSettings>
<!-- Set the value here to specify your custom packages folder. -->
<add key="packagesPath" value="C:\MyPackages" />
</appSettings>
packagesPath 可以是绝对或虚拟路径。
省略 packagesPath 或将其留空时,包文件夹是默认的 ~/Packages。
发布 Web 应用时使包可用
要在向服务器发布应用程序时在源中提供包,请将每个 .nupkg 文件添加到 Visual Studio 中的 Packages 文件夹,然后将每个文件的“生成操作”设置为“内容”,将“复制到输出目录”设置为“始终复制” :
Visual Studio 中引入私有库
在Visual Studio中,选择“工具>选项>NuGet包管理器”,添加私有源,名称可以随意填写。