65.9K
CodeProject 正在变化。 阅读更多。
Home

在 Windows Azure 中创建您自己的私有 NuGet 服务器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.88/5 (21投票s)

2015年2月5日

CPOL

6分钟阅读

viewsIcon

112139

downloadIcon

16

作为 Windows Azure 的入门教程,本文将指导您一步一步地在 Windows Azure 中创建您自己的私有 NuGet 服务器。

引言

无论您是大型开发团队的一员,还是独自进行个人边角项目,您可能都希望在多个项目之间重用代码。

一种很好的方法是创建程序包,将它们存储在存储库中,并在需要时引用它们。NuGet 程序包还允许您拥有同一程序包的多个版本,并指定任何最终依赖项。如果您经常使用 Visual Studio 中的 NuGet 程序包管理器,那么您已经非常熟悉这个概念了。

本文将向您展示如何创建自己的私有 NuGet 服务器,以及如何在 Windows Azure 中托管它。

先决条件

我需要提一下您需要 Visual Studio 吗?也许不需要,但我还是提了!任何较新的版本都可以(本文的截图来自 Visual Studio 2013)。

当然,您还需要一个有效的 Windows Azure 订阅。如果您还没有,可以 在此处 注册免费 30 天试用。

创建新的 NuGet 服务器

打开 Visual Studio。转到 **文件** > **新建** > **项目...** 来创建一个新项目。在模板中,选择 **ASP.NET 空 Web 应用程序**,如下所示

new empty web application

解决方案资源管理器应显示一个空解决方案,如下所示

Empty solution

现在,我们将使用官方 NuGet 存储库将 `NuGet.Server` 添加到我们的项目中。右键单击 **引用**,然后选择 **管理 NuGet 程序包...**。搜索 `NuGet.Server`,然后单击 **安装**。

select and install nuget server

现在,解决方案应如下所示

solution with nuget server

按 F6 并确保解决方案成功生成。

我们已基本准备就绪。在运行和部署代码之前,还有最后一件事要做,那就是检查我们的配置。打开 *web.config* 并检查以下设置。

    <!--
            Determines if an Api Key is required to push\delete packages from the server.
    -->
    <add key="requireApiKey" value="true"/>
    <!--
            Set the value here to allow people to push/delete packages from the server.
            NOTE: This is a shared key (password) for all users.
    -->
    <add key="apiKey" value="Xx5TJbXBe9jEvAfGxV7x"/>
    <!--
            Change the path to the packages folder. Default is ~/Packages.
            This can be a virtual or physical path.
        -->
    <add key="packagesPath" value=""/>

为确保只有授权用户能够添加和删除程序包,请将 `requireApiKey` 设置为 `true`,并将 `apiKey` 设置为您要使用的特定密钥。(请确保使用与本示例中提供的密钥不同的密钥)。将 `packagesPath` 保留为其默认值。

按 F5 运行服务器。您应该看到以下主页

you are running nuget server

现在我们已在本地成功运行了 NuGet 服务器,接下来将其部署到 Windows Azure。

部署到 Windows Azure

Visual Studio 与 Windows Azure 的集成非常出色,您可以直接从 Visual Studio 创建新网站并将其部署到其中。在 **解决方案资源管理器** 中,右键单击 **NuGetServer** 项目,然后单击 **发布...**

right click and publish

在 **配置文件** 部分,选择 **Microsoft Azure 网站**。

select azure and publish

单击 **登录**,然后使用注册 Windows Azure 时使用的电子邮件地址进行身份验证。

sign in

现在您已登录,单击 **新建...** 来创建一个新网站

signed in

选择一个尚未被占用的 **网站名称**。我将在本文的其余部分使用 **code-project-nugetserver**。然后,NuGet 服务器将可在此 URL 访问:**https://code-project-nugetserver.azurewebsites.net**。(当然,您应该使用不同的名称,因为其他读者可能已经使用了)。

除非您有多个订阅,否则保留默认订阅。选择一个离您的用户较近的区域以提高性能。此项目不需要数据库。

create website in azure

现在,单击 **创建** 在 Azure 中创建网站。创建完成后,您将看到发布前的最终屏幕。它包含连接详细信息,例如网站地址、用户名和密码。所有字段都应正确预填充,您可以单击 **验证连接** 来确保详细信息正确。

准备就绪后,单击 **发布** 将 NuGet 服务器发布到网站。

validate connection and publish

现在访问 **https://code-project-nugetserver.azurewebsites.net** (请记住,我建议您选择一个不同的名称,因此 URL 的第一部分对您来说应该不同),以确保服务器正在运行。您应该看到类似以下的内容

running live

恭喜,您的 NuGet 服务器已成功运行!

发布您的第一个程序包

http://nuget.codeplex.com/releases/view/121838 下载 NuGet.exe(或查看最新版本),并确保它在您的路径中,以便您可以在命令行中运行它。实际上,NuGet.exe 是一个命令行工具,允许您创建和发布程序包。为了本文的目的,我附带了一个示例程序包(Sample.Package.2.1.3.8.nupkg),如果您想了解更多关于如何创建 NuGet 程序包的信息,可以在 nuget.org 上找到优秀的文档。

现在您已准备好发布您的第一个程序包。在命令行中,运行

nuget push Sample.Package.2.1.3.8.nupkg -s 
https://code-project-nugetserver.azurewebsites.net Xx5TJbXBe9jEvAfGxV7x

pushed

您可以通过访问 **https://code-project-nugetserver.azurewebsites.net/nuget/Packages** 来双重检查您的程序包是否已成功发布。确保页面上列出了 `Sample.Package.2.1.3.8.nupkg`

package

从 Visual Studio 下载您自己的程序包

现在您有了自己的 NuGet 服务器,可以配置 Visual Studio 程序包管理器来提供您自己的程序包。在 **Visual Studio** 中,转到 **工具** > **选项** > **NuGet 程序包管理器** > **程序包源**。单击右上角的 **+** 号添加一个新源。在 **名称** 字段中给它一个名称,例如 **我的程序包**,并将 **源** 设置为 **https://code-project-nugetserver.azurewebsites.net/nuget/**。

add nuget source to visual studio

现在,您可以将自己的程序包添加到项目中。对于给定的项目,右键单击 **引用**,然后选择 **管理 NuGet 程序包...**。在左侧,选择 **我的程序包**,并且 `Sample.Package.2.1.3.8.nupkg` 应该会列出

download package

您现在拥有一个成熟的开发环境,可以在其中发布程序包以供多个项目重用。

关注点

在本文中,我详细介绍了如何创建自己的私有 NuGet 服务器以及如何将其发布到 Windows Azure。设置非常简单,您的服务器可以在 20 分钟内从云端运行。

将您的代码打包并发布,与您的开发团队共享,或供您自己将来重用。您还可以使用 NuGet 程序包进行部署:我将在未来的文章中介绍如何使用 Octopus Deploy 部署代码。

Windows Azure 的一个主要优点是可伸缩性,我将在另一篇文章中详细介绍如何设置您的网站以根据服务器工作负载自动进行扩展或缩减。

注意:如果您不想将 NuGet 程序包存储在默认文件夹中,请务必指定一个相对路径。您的服务器与许多其他网站一起在 IIS 中运行。Azure 中的安全模型可确保每个网站独立运行,因此只能访问网站的根文件夹。

请告诉我您在使用 NuGet 服务器时的情况。您在工作中使用它吗?还是在家里用于边角项目?您是否用于部署?您遇到过任何限制或有任何功能请求吗?

感谢您的反馈,祝您编码愉快!

历史

  • [2015/02/05]:首次发布
© . All rights reserved.