

 适用于 .NET 的 Amazon SDK V3 已进入维护模式。

我们建议您迁移到 [适用于 .NET 的 Amazon SDK V4](https://docs.amazonaws.cn/sdk-for-net/v4/developer-guide/welcome.html)。有关如何迁移的更多详细信息和信息，请参阅我们的[维护模式公告](https://www.amazonaws.cn/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/)。

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

# 迁移到适用于 .NET 的 Amazon SDK的版本 3
<a name="migration-v3"></a>

本主题介绍了版本 3 的适用于 .NET 的 Amazon SDK中的更改以及如何将您的代码迁移到此版本的开发工具包。

## 关于适用于 .NET 的 Amazon SDK版本
<a name="net-dg-migrate-v3-intro"></a>

适用于 .NET 的 Amazon SDK（最初于 2009 年 11 月发布）专为 .NET Framework 2.0 而设计。自发布以来，.NET 已通过 .NET Framework 4.0 和 .NET Framework 4.5 进行了改进，并且已增加了新的目标平台：WinRT 和 Windows Phone。

适用于 .NET 的 Amazon SDK版本 2 已更新，可以利用 .NET 平台的新功能并且面向 WinRT 和 Windows Phone。

适用于 .NET 的 Amazon SDK版本 3 已进行更新，使程序集实现模块化。

## 面向开发工具包的架构重新设计
<a name="net-dg-migrate-v3-arch"></a>

整个版本 3 的适用于 .NET 的 Amazon SDK已进行重新设计来实现模块化。现在，每项服务均在各自的程序集中而非某个全局程序集中实现。您不再需要将整个适用于 .NET 的 Amazon SDK添加到应用程序。现在，您可以仅为应用程序使用的 Amazon 服务添加程序集。

## 重大更改
<a name="net-dg-migrate-v3-breaking"></a>

以下部分介绍了对版本 3 的适用于 .NET 的 Amazon SDK的更改。

### 删除了 AWSClientFactory
<a name="awsclientfactory-removed"></a>

删除了 `Amazon.AWSClientFactory` 类。现在，要创建服务客户端，请使用服务客户端的构造函数。例如，要创建 `AmazonEC2Client`，请使用：

```
var ec2Client = new Amazon.EC2.AmazonEC2Client();
```

### 删除了 Amazon.Runtime.AssumeRoleAWSCredentials
<a name="assumeroleawscredentials-removed"></a>

删除了 `Amazon.Runtime.AssumeRoleAWSCredentials` 类，因为它位于核心命名空间中但依赖于 Amazon Security Token Service，并且开发工具包中已将其弃用一段时间。请改用 `Amazon.SecurityToken.AssumeRoleAWSCredentials` 类。

### 从 S3Link 中删除了 SetACL 方法
<a name="setacl-removed"></a>

`S3Link` 类是 `Amazon.DynamoDBv2` 程序包的一部分，用于将作为 DynamoDB 项中的参考的对象存储在 Amazon S3 中。虽然这是一项有用的功能，但我们不需要为 DynamoDB 创建 `Amazon.S3` 程序包的编译依赖项。因此，我们从 `Amazon.S3` 类简化了公开的 `S3Link` 方法，并将 `SetACL` 方法替换为 `MakeS3ObjectPublic` 方法。要更好地控制对象的访问控制列表 (ACL)，请直接使用 `Amazon.S3` 程序包。

### 删除过时的结果类
<a name="result-classes-removed"></a>

对于适用于 .NET 的 Amazon SDK中的大多数服务，操作将返回一个响应对象，该对象包含操作的元数据，例如请求 ID 和结果对象。拥有一个单独的响应和结果类是多余的，并且会让开发人员编写额外的代码。在版本 2 的适用于 .NET 的 Amazon SDK中，我们将结果类中的所有信息放入响应类中。我们还将结果类标记为过时以阻止对结果类的使用。在版本 3 的适用于 .NET 的 Amazon SDK中，我们删除了这些过时的结果类，这样有助于减小开发工具包的大小。

### Amazon Config 部分更改
<a name="configs-changes"></a>

可以通过 适用于 .NET 的 Amazon SDK 或 `App.config` 文件执行`Web.config`的高级配置。您可以通过与以下内容类似的 `<aws>` 配置部分 (将引用开发工具包程序集名称) 来执行此操作。

```
<configuration>
  <configSections>
    <section name="aws" type="Amazon.AWSSection, AWSSDK"/>
  </configSections>
  <aws region="us-west-2">
    <logging logTo="Log4Net"/>
  </aws>
</configuration>
```

在版本 3 的适用于 .NET 的 Amazon SDK中，`AWSSDK` 程序集不再存在。我们将常见代码放入 `AWSSDK.Core` 程序集中。因此，您需要将对 `AWSSDK` 或 `App.config` 文件中的 `Web.config` 程序集的引用更改为对 `AWSSDK.Core` 程序集的引用，如下所示。

```
<configuration>
  <configSections>
    <section name="aws" type="Amazon.AWSSection, AWSSDK.Core"/>
  </configSections>
  <aws region="us-west-2">
    <logging logTo="Log4Net"/>
  </aws>
</configuration>
```

您也可以使用 `Amazon.AWSConfigs` 类操作配置设置。在适用于 .NET 的 Amazon SDK的版本 3 中，我们已将 DynamoDB 的配置设置从 `Amazon.AWSConfigs` 类更改为 `Amazon.AWSConfigsDynamoDB` 类。