在 ASP.NET Core 中使用包和库

在这里插入图片描述

如果您想开发一个现代 Web 应用程序,您很快就会意识到您无法自己编写所有内容。您将依赖一些第三方客户端和服务器端库和组件来提高开发速度。如今,开发人员可以使用许多在线代码存储库和资源,下载和跟踪所有第三方包可能是一项痛苦的任务。幸运的是,开发人员现在有许多不同的工具和扩展可供他们使用,这可以使这项任务变得更加容易。在本教程中,我将演示如何使用 Node Package Manager (npm)、Library Manager (LibMan) 和 Nuget 等工具来下载和管理 ASP.NET Core 项目中的服务器和客户端库。

下载:Download Source Code

节点包管理器 (npm) 简介

npm 是世界上最大的客户端库和包存储库之一,开发人员可以从中下载和安装其他开发人员发布和共享的不同开源库。 Npm 是 Github 的子公司,被认为是 JavaScript 运行时环境 Node.js 的默认包管理器。他们还为开发人员提供了一个命令行工具 (CLI),用于发布和下载第三方库。过去,npm 只是 Node.js 的包管理器,但现在它也被其他平台和技术的开发人员使用。

从命令行 (CLI) 使用 npm

要使用 npm 工具,您需要确保已在您的机器上下载并安装了 Node.js。如果您使用的是 Windows,则可以从 Node.js 下载 Windows 安装程序。网站。在您的机器上安装了 npm 命令行工具 (CLI) 后,您就可以转到您的项目文件夹并使用不同的 npm 命令来下载和安装软件包。

作为一般规则,所有使用 Node.js 的项目都需要创建一个名为 package.json 的文件,其中包含项目信息,例如名称、作者、版本以及有关您在项目中下载和管理的第三方库的信息。您可以使用文本编辑器自己创建此文件,也可以使用 npm 命令 (init) 之一自动生成此文件。 Npm init 命令是生成 package.json 文件的分步工具。您可以使用 npm init 命令初始化项目。

npm init

在项目根文件夹中打开命令提示符并键入上述命令并按 Enter。
在这里插入图片描述
系统会要求您提供项目名称、版本、描述、作者等。如果此时您不想提供此信息,只需多次按 Enter,直到到达该工具将显示的最后一步您将获取示例 package.json 文件,并会要求您确认该文件是否适合您。你可以再按一次回车键,就会为你生成一个 package.json 文件。

在这里插入图片描述
接下来,您可以使用以下命令从 npm 在线目录下载并安装软件包。

npm install <module>

在上面的命令中,模块是您要下载的模块的名称。例如,如果您要安装 Express(这是一个众所周知的 Node.js Web 框架),您可以运行以下命令:

	
npm install express

上面的命令会将 express 模块安装到当前目录的 /node_modules 中。请注意,无论何时从 npm 安装模块,它都会安装到 node_modules 文件夹中。
如果现在打开 package.json 文件,您会看到有关快递包的元数据信息也记录在 package.json 文件中。

{
  "name": "packageslibrariesdemo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1"
  }
}

要查看 npm 命令的完整列表,您可以在此处访问 npm 文档

在 Visual Studio 中使用 npm

如果您不喜欢使用命令行界面 (CLI),那么您可以直接在 Visual Studio 中使用 npm。要在 Visual Studio 中使用 npm,您需要使用内置的 Visual Studio 模板创建 npm 配置文件。在 Visual Studio 解决方案资源管理器中右键单击您的项目,然后通过选择如下所示的 npm 配置文件模板来添加一个新文件:在这里插入图片描述
Visual Studio 会自动为你创建一个 package.json 文件。现在,您可以指定要在项目中下载和使用的第三方客户端库。您还将从内置的 IntelliSense 中获得一些帮助,如果您想指定库的特定版本,这将非常有用。在这里插入图片描述
我正在安装 bootstrap 4.5.3,只要你保存文件,你就会看到 bootstrap 包下载到 node_modules 文件夹中,并且在 Dependencies 节点下也添加了一个依赖项。

注意:如果您没有看到 node_modules 文件夹,请确保在 Visual Studio 解决方案资源管理器中启用了“显示所有文件”选项。

在这里插入图片描述
要卸载该库,您只需从 package.json 文件中删除“bootstrap”:“4.5.3”行,一旦保存该文件,bootstrap 将从您的项目中删除。

什么是库管理器 (LibMan)

如果您不想在您的项目中使用 npm,那么 Microsoft 为您提供了另一个名为 Library manager (LibMan) 的工具。 LibMan 是一个轻量级工具,用于从文件系统或内容交付网络 (CDN) 下载库和包。目前该工具支持CDNJS、jsDelivr、unpkg等CDN。就像 npm 一样,这个工具也可以从命令行或在 Visual Studio 中使用。

要下载 LibMan 工具 CLI,您可以在 Windows PowerShell 中键入以下命令。

dotnet tool install –g Microsoft.Web.LibraryManager.Cli

在这里插入图片描述

从命令行 (CLI) 使用 LibMan

安装该工具后,您可以使用“安装”选项下载软件包。您可以指定包名称,该工具将下载该包中的所有文件,或者您可以指定所需的文件。例如,您只能下载 bootstrap 4.5.3 包中可用的 bootstrap.css 文件,如下所示:

libman install bootstrap@4.5.3 --files dist/css/bootstrap.css

在这里插入图片描述
要查看可用命令的完整列表,您可以在此处访问 LibMan 文档

从 Visual Studio 使用 LibMan

我敢肯定,你们中的一些人不喜欢 CLI,因此您也可以在 Visual Studio 中使用 LibMan 工具。在解决方案资源管理器中右键单击您的项目,然后选择添加 > 客户端库在这里插入图片描述
工具对话框打开后,您可以从可用的 CDN 中选择要使用的提供者。然后,您可以在选定的提供程序在线目录中搜索可用的客户端库和框架。例如,如果您开始输入 bootstrap,您将看到该工具正在使用您的匹配关键字搜索和填充所有库的列表。在这里插入图片描述
您甚至可以选择您感兴趣的库或框架的特定版本,如下所示:在这里插入图片描述
一旦您选择了您需要的版本,该工具还将为您提供下载所有或特定文件的选项,最后,您可以指定要下载项目中的包和库的位置。在 ASP.NET Core 项目中,wwwroot 文件夹通常用于保存客户端 CSS 和 JavaScript 库,因此您可以保留默认位置并按安装按钮。
在这里插入图片描述
安装软件包后,您将看到所选文件已下载并保存在 wwwroot 文件夹中。其次,您还会看到在您的项目中添加了一个新文件 libman.json。这个文件类似于我们上面看到的 package.json 文件。它将用于跟踪您使用 LibMan 工具在项目中下载的所有第三方库和包。在这里插入图片描述

什么是 NuGet?

npm 是客户端库和框架的包管理器,而 NuGet 是用于在 .NET 世界中创建、共享和使用服务器端代码和库的包管理器。开发者可以

  1. 将他们的代码 (DLL) 和相关资源捆绑到包中(.nupkg 文件)
  2. 将他们的 NuGet包发布到私有主机(组织专有)或包的公共存储库,例如 nuget.org
  3. 搜索、下载和使用其他开发者托管的包
dotnet add package Newtonsoft.Json

下载包后,您会注意到它被添加为解决方案资源管理器中“”节点下的依赖项。如果您将打开项目文件,您还会注意到它的引用也被添加为 PackageReference 元素。在这里插入图片描述
如果要从项目中删除 Newtonsoft 包,只需从项目文件中删除 PackageReference 元素并构建项目。

从包管理器控制台 (CLI)

使用 NuGet 如果你不想使用上面提到的 PowerShell 命令窗口并希望留在 Visual Studio 中,那么你可以从 Visual Studio 中可用的 NuGet 包管理器控制台找到并下载 NuGet 包。此控制台允许您使用 CLI 命令查找、安装、卸载或更新 NuGet 包。请注意,此控制台内置于 Windows 上的 Visual Studio 中。它不包含在 Visual Studio for Mac 或 Visual Studio Code 中。可以使用 Visual Studio 中的工具 > NuGet 包管理器 > 包管理器控制台命令打开此控制台。控制台打开后,您可以使用 Find-Package 命令查找包,如下所示。

Find-Package elmah

您将能够在控制台窗口中看到所有带有“elmah”字样的包。在这里插入图片描述
要在您的项目中安装特定包,您可以使用“Install-Package”命令和您要下载的包名称。

Install-Package elmah

确保在使用上述命令时,“nuget.exe”被选为包源,并且您的项目显示在默认项目下拉列表中。

要查看 NuGet 命令的完整列表,您可以访问 Microsoft 官方文档中的 Nuget PowerShell 命令页面。

在 Visual Studio 中使用 NuGet 包管理器 UI

如果不想记住或学习 NuGet 命令,则可以使用 Windows 上的 Visual Studio 中提供的 Nuget 包管理器 UI。 UI 界面使您可以轻松地在一个项目或解决方案的所有项目中轻松搜索、安装、卸载和更新 NuGet 包。要打开 NuGet 包管理器 UI,只需在解决方案资源管理器中右键单击您的项目,然后选择“管理 NuGet 包…”选项。

默认情况下,NuGet UI 将显示最流行的 NuGet 包列表,但您可以通过在搜索框中键入包名称来搜索所需的包。您还可以选择包源来告诉 UI 您要从何处下载和安装包。列表中包含该包后,选择该包将在右侧显示其描述、可用版本和依赖项。您可以选择您需要的版本,然后单击“安装”按钮开始 安装过程。在这里插入图片描述
要了解有关包管理器 UI 的更多信息,您可以在此处访问官方文档

总结概括

有数百万个第三方包可用于客户端和服务器端开发,我希望本教程让 ASP.NET Core 开发人员概述了可用于搜索和安装您喜欢的第三方包和库的不同工具和扩展。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于一些常用的类进行封装。方便大家使用using System; using System.IO; using System.Text; using System.Security.Cryptography; namespace LQSoft.Common { /// <summary> /// 加密 /// </summary> public class AES { //默认密钥向量 private static byte[] Keys = { 0x41, 0x72, 0x65, 0x79, 0x6F, 0x75, 0x6D, 0x79, 0x53, 0x6E, 0x6F, 0x77, 0x6D, 0x61, 0x6E, 0x3F }; public static string Encode(string encryptString, string encryptKey) { encryptKey = Utils.GetSubString(encryptKey, 32, ""); encryptKey = encryptKey.PadRight(32, ' '); RijndaelManaged rijndaelProvider = new RijndaelManaged(); rijndaelProvider.Key = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 32)); rijndaelProvider.IV = Keys; ICryptoTransform rijndaelEncrypt = rijndaelProvider.CreateEncryptor(); byte[] inputData = Encoding.UTF8.GetBytes(encryptString); byte[] encryptedData = rijndaelEncrypt.TransformFinalBlock(inputData,0,inputData.Length); return Convert.ToBase64String(encryptedData); } public static string Decode(string decryptString, string decryptKey) { try { decryptKey = Utils.GetSubString(decryptKey, 32, ""); decryptKey = decryptKey.PadRight(32, ' '); RijndaelManaged rijndaelProvider = new RijndaelManaged(); rijndaelProvider.Key = Encoding.UTF8.GetBytes(decryptKey); rijndaelProvider.IV = Keys; ICryptoTransform rijndaelDecrypt = rijndaelProvider.CreateDecryptor(); byte[] inputData = Convert.FromBase64String(decryptString); byte[] decryptedData = rijndaelDecrypt.TransformFinalBlock(inputData,0,inputData.Length); return Encoding.UTF8.GetString(decryptedData); } catch { return ""; } } } /// <summary> /// 加密 /// </summary> public class DES { //默认密钥向量 private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; /// <summary> /// DES加密字符串 /// </summary> /// <param name="encryptString">待加密的字符串</param> /// <param name="encryptKey">加密密钥,要求为8位</param> /// <returns>加密成功返回加密后的字符串,失败返回源串</returns> public static string Encode(string encryptString, string encryptKey) { encryptKey = Utils.GetSubString(encryptKey, 8, ""); encryptKey = encryptKey.PadRight(8, ' '); byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8)); byte[] rgbIV = Keys; byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString); DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Convert.ToBase64String(mStream.ToArray()); } /// <summary> /// DES解密字符串 /// </summary> /// <param name="decryptString">待解密的字符串</param> /// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param> /// <returns>解密成功返回解密后的字符串,失败返源串</returns> public static string Decode(string decryptString, string decryptKey) { try { decryptKey = Utils.GetSubString(decryptKey, 8, ""); decryptKey = decryptKey.PadRight(8, ' '); byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey); byte[] rgbIV = Keys; byte[] inputByteArray = Convert.FromBase64String(decryptString); DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Encoding.UTF8.GetString(mStream.ToArray()); } catch { return ""; } } } } 这是其的一段代码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值