四、使用 NuGet 重用代码

在本章中,我们将涵盖以下主题:

  • NuGet 包管理
  • 使用 NuGet 包类库创建一个 NuGet 包
  • 创建本地 NuGet 存储库并从中消费包
  • 使用 NuGet package Explorer 创建一个 NuGet 包
  • 与社区共享 NuGet 包
  • 创建 Azure NuGet 存储库

介绍

构建可重用组件是计算机开发领域的基本技能之一。 自。net 出现以来,集成在。net 类库中的类的重用已经成为可能。 我们可以在。net 类库项目中将这些类编译为DLL(动态链接库),这是微软实现的共享库。

自 Visual Studio 2010 和 ASP 创建以来。 asp.net MVC 的出现,使得 asp.net MVC 的实现成为可能.NET 世界变得越来越开放源码友好,共享开放源码库和组件的必要性变得不可避免。

为了共享库,微软使用了NuGet,这是一种开源包管理器,用于通过 Visual Studio 在项目上安装、卸载或更新。net 库和组件。 我们还可以在 NuGet Online 存储库中搜索来自 Microsoft 或其他任何人的包,解决丢失的包,管理来自其他包的包依赖关系,并支持多个框架。

通过这种方式,我们不再需要在不同的现有存储库(如 CodePlex、Github 或微软网站)上搜索库。

在本章中,我们将学习如何以几种方式管理和创建我们自己的 NuGet 包。

我们将学习如何发布我们刚刚在私有存储库中创建的 NuGet 包。 这个包可以发布在前提或 Azure 上,但也可以发布在公共 NuGet 存储库上,与社区共享。

NuGet 包管理

在本教程中,我们将学习如何管理 NuGet 包。

准备

自 Visual Studio 2012 以来,NuGet 已经完全集成到 Visual Studio 中,在 Visual Studio 中打开或创建一个项目,并在解决方案资源管理器中选择它后,我们可以通过几种不同的方式安装 NuGet 包。

怎么做……

  1. 选择项目|管理 NuGet 包。 这个操作将打开 NuGet 包管理器对话框:

  1. 为解决方案....选择“工具|管理包管理器|管理 NuGet 包”打开菜单 这个操作将打开 NuGet 包管理器对话框:

  1. 通过选择“工具|管理包管理器|包管理器控制台”打开菜单。 通过PowerShell命令行,此操作将打开包管理器控制台,允许我们安装、卸载或更新 NuGet 包:

  1. 通过键入Install-Package和包的名称,我们将使用 PowerShell 安装一个 Nuget 包。

我们可以通过访问 NuGet 官方网站并搜索特定的包来找到每个包使用的 Powershell 命令行:

这个链接将把我们带到这个特定包的 NuGet 包主页,我们可以看到命令行。

  1. 在“解决方案资源管理器”中右键单击项目根文件夹并选择“管理 NuGet 包”。
  2. 通过打开project.json并在依赖项中输入我们的包名,我们可以看到智能感知正在工作并处理所有包含EntityFramework名称的包:

  1. 在保存project.json文件时,输入的包将被 VS NuGet 工具自动从 NuGet 在线存储库加载:

现在我们可以看到所有的包依赖:

另请参阅

我们可以在线查询 NuGet 图库,在http://www.nuget.org/

我们可以在http://blog.nuget.org/看到关于 NuGet 包的新闻和信息。

我们可以在http://github.com/nuget/home查询 NuGet 源代码库。

使用 NuGet 包类库创建一个 NuGet 包

在本食谱中,我们将学习如何使用 NuGet 包类库创建一个 NuGet 包。

准备

当我们构建一个。net 项目时,会生成一个 DLL 文件或 exe 文件。 每个编译过的。net EXE 或。net DLL 都是可重用的组件。

创建和使用可重用组件的一种更现代、更通用的方法是从我们的代码中创建 NuGet 包。 因此,我们将在我们的私人组织中创建这些组件供个人使用,并通过在公共 NuGet 存储库中发布它们与社区共享(从而使它们公开化)。

怎么做……

有几种方法可以创建一个 NuGet 包。

老方法

  1. 首先,我们需要从以下 URL 下载 NuGet.exe:https://dist.nuget.org/index.html
  2. 在这个页面,我们可以选择最新的 Windows x86Commandline.exe文件。
  3. 我们也可以选择 Visual Studio 最新的 VS 2015 VSIX 扩展。
  4. 要使用NuGet.exe从程序集创建包,我们必须将NuGet.exe放在与 DLL 相同的文件夹中。 目标是创建一个nuspec文件。

的新方法

  1. 我们现在可以使用 Visual Studio 2015 自带的新项目模板,通过选择 new project | Visual c#或 Web | class 库包,将类库创建为 NuGet 包。
  2. 我们创建一个新类,将在其他项目中重用:

  1. 我们创建了在Message类中重用的代码:

  1. 我们必须右键单击项目的名称并选择 Properties。 在 Build 菜单上,让我们在构建项目之前检查 Build 的 Produce 输出:

  1. 右键单击项目的名称并选择 Build。 我们可以看到生成的.nupkg.symbols.nupkg文件。

我们可以在输出窗口中看到编译结果:

我们可以通过导航artifacts\bin\[ProjectName]\Debug找到这些以项目根目录开始的文件:

创建本地 NuGet 存储库并从中消费包

在本菜谱中,我们将学习如何使用本地存储库中的包。 我们还将学习如何创建本地存储库。

怎么做……

  1. 在我们自己的计算机上创建一个本地文件夹之后,我们将使用它作为包的本地存储库。 在本例中,此文件夹为C:\dev\NuGetPkg:

  1. 让我们配置 Visual Studio 来配置这个新存储库。 导航到工具| NuGet 包管理器|包管理器设置|包来源:

  1. 让我们点击+按钮来添加一个新的存储库:

  1. 让我们给这个存储库添加一个名字:

  1. 选择一个本地文件夹:

  1. 让我们点击 Update 按钮来更新目录地址:

  1. 让我们把刚才创建的 NuGet 包放在前面的配方中:

  1. 在“解决方案资源管理器”中右键单击根项目,选择“管理 NuGet 包”,打开 NuGet 包管理器。
  2. 如果我们打开右上角的 Package source 下拉列表,我们可以看到我们的新包库:

  1. 我们现在可以在当前项目的已安装包列表中看到这个包:

  1. 现在让我们通过点击 install 按钮在当前项目中安装这个包; 系统弹出如下对话框:

  1. 让我们点击 OK 来安装包并关闭对话框。
  2. 让我们选择 Installed 按钮来验证我们是否在这个项目的已安装包列表中看到这个包:

  1. 点击解决方案资源管理器中的References文件夹,我们也可以看到已安装的包:

使用 NuGet package Explorer 创建一个 NuGet 包

在这个食谱中,我们将用。net 4.5.1 创建一个 NuGet 包,以便在 asp.net 中使用它.NET CORE 在 DNX 4.5.1 下的应用。

怎么做……

  1. 让我们打开 Visual Studio 2015 并创建一个类库:

  1. 现在我们将在这个库中创建一个类:

  1. 右键单击项目名称,然后单击 Properties。
  2. 我们将项目构建选项设置为发布模式。
  3. 然后,我们将检查Generate XML文档。

  4. 为了创建一个包,我们需要 DLL 和相关的 XML 文档,也就是代码中的.xml 注释:

  1. 让我们建立图书馆。 我们可以看到这个构建的输出窗口结果。

  1. 我们可以看到生成的 DLL 和 XML 文件:

  1. 让我们在 Codeplex 网站上下载 NuGet Package Explorer:https://npe.codeplex.com/。 这是一个非常容易创建和探索 NuGet 包的免费工具:

下面是安装界面:

  1. 我们现在将启动NuGetPackageExplorer.application.exe并选择 File | New |创建一个新包:

NuGet 包浏览器看起来像这样:

  1. 我们现在将创建一个lib文件夹,右键单击右边的 Package 内容面板,并选择 Add Lib folder:

  1. 接下来,我们通过右键单击刚刚创建的lib文件夹来创建一个目标框架文件夹:

  1. 通过右键单击刚刚创建的文件夹添加DLLXML文件:

  1. 选择要使用的DLLXML文件:

  1. 接下来,选择 EDIT 菜单和 EDIT Metadata 菜单项来修改包元数据:

  1. 让我们点击按钮来验证:

  1. 该软件包已准备好发布:

  1. 选择文件|发布。 将打开“发布包”对话框。

我们可以在 NuGet 网站或任何本地或远程存储库上发布。 我们需要在 NuGet 网站上创建我们的 NuGet 账户时生成的发布密钥。

  1. 让我们点击 Publish 按钮来发布这个包:

  1. 最后,我们可以在本地保存 NuGet 包为.nupkg包:

这些包现在存储在我们的本地存储库中:

与社区共享 NuGet 包

在创建我们自己的 NuGet 包创建一个 NuGet 包recipe 之后,我们将在 NuGet 公共存储库中发布它。

怎么做……

  1. 首先,我们在 NuGet 网站上创建一个账户:

  1. 接下来,我们在 NuGet 网站上填写表格:

我们现在注册:

  1. 让我们单击帐户的用户名以查看页面帐户(在本例中是 sbz)。 在这个页面上,我们可以看到我们的 API 键,我们可以在 Visual Studio 项目中包含它来生成 NuGet 包:

  1. 接下来,我们点击上传一个包按钮:

  1. 让我们进入上传包页面来上传一个包。 现在我们可以看到,我们的包刚刚被上传到 NuGet 公共存储库:

创建 Azure NuGet 存储库

在本菜谱中,我们将在 Azure 上创建一个 NuGet 存储库。

怎么做……

  1. 首先,我们创建一个空的 ASP.NET Web 应用:

  1. 接下来,让我们来检查一下云中的主机:

  1. 现在让我们为发布配置 Azure 帐户:

  1. 右键单击项目名称,选择管理 NuGet 包:

  1. 搜索NuGet.ServerNuGet 包并安装。 它将允许我们托管 NuGet 提要:

此包将添加到 DNX 4.5.1 参考:

  1. 现在我们将通过点击 publish 按钮来发布 web 应用:

  1. 我们可以在线看到 Azure NuGet 提要:

  1. 接下来,我们将把这个存储库添加到 NuGet 存储库中,首先选择 Tools | Options。
  2. 点击加号按钮,进入 Azure 网站提要,然后点击更新: