如何搭建 NuGet 私有仓库,NuGet Server 本地服务

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包管理器,添加私有源,名称可以随意填写。

作者最新文章
C# 使用 CSVHelper 操作 csv 文件, .net core, .net framework 读取写入 csv 文件
C# 实现字符串文本换行的方法,文本如何换行
C# 如何循环读取文件每一行文本内容
C# DateTime AddMonths 的错误用法导致跳过日期
C# 全角转换半角,半角转换为全角