

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# NuGet 程序包名称、版本和资产名称规范化
<a name="nuget-name-normalization"></a>

在存储程序包名称、资产名称和程序包版本之前，CodeArtifact 会对程序包名称、资产名称和程序包版本进行规范化，这意味着 CodeArtifact 中的名称或版本可能与发布程序包或资产时提供的名称或版本不同。

**程序包名称规范化：**CodeArtifact 通过将所有字母转换为小写来使 NuGet 程序包名称规范化。

**程序包版本规范化：**CodeArtifact 使用与 NuGet 相同的模式对 NuGet 程序包版本进行规范化。以下信息来自 NuGet 文档中的[规范化版本号](https://docs.microsoft.com/en-us/nuget/concepts/package-versioning#normalized-version-numbers)。
+ 从版本号中删除前导零：
  + `1.00` 视为 `1.0`
  + `1.01.1` 视为 `1.1.1`
  + `1.00.0.1` 视为 `1.0.0.1`
+ 版本号第四部分中的零会省略掉：
  + `1.0.0.0` 视为 `1.0.0`
  + `1.0.01.0` 视为 `1.0.1`
+ 删除 SemVer 2.0.0 构建元数据：
  + `1.0.7+r3456` 视为 `1.0.7`

**程序包资产名称规范化：**CodeArtifact 根据规范化的程序包名称和程序包版本来构造 NuGet 程序包资产名称。

API 和 CLI 请求中可使用非规范化程序包名称和版本名称，因为 CodeArtifact 会对这些请求的程序包名称和版本输入进行规范化。例如，`--package Newtonsoft.JSON` 和 `--version 12.0.03.0` 的输入会规范化，并返回一个使用规范化程序包名称 `newtonsoft.json` 和版本 `12.0.3` 的程序包。

必须在 API 和 CLI 请求中使用规范化程序包资产名称，因为 CodeArtifact 不会对 `--asset` 输入执行规范化。

必须在 ARN 中使用规范化名称和版本。

要查找程序包的规范化名称，请使用 `aws codeartifact list-packages` 命令。有关更多信息，请参阅 [列出程序包名称](list-packages.md)。

要查找程序包的非规范化名称，请使用 `aws codeartifact describe-package-version` 命令。`displayName` 字段中返回程序包的非规范化名称。有关更多信息，请参阅 [查看和更新程序包版本详细信息和依赖项](describe-package-version.md)。