

 適用於 .NET 的 AWS SDK V3 已進入維護模式。

我們建議您遷移至 [適用於 .NET 的 AWS SDK V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html)。如需如何遷移的其他詳細資訊和資訊，請參閱我們的[維護模式公告](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 遷移至 3.5 版 適用於 .NET 的 AWS SDK
<a name="net-dg-v35"></a>

3.5 版透過將 SDK 所有非架構變化的支援轉換為 .NET Standard 2.0， 適用於 .NET 的 AWS SDK 進一步標準化 .NET 體驗。 [https://docs.microsoft.com/en-us/dotnet/standard/net-standard](https://docs.microsoft.com/en-us/dotnet/standard/net-standard)視環境和程式碼基底而定，若要利用第 3.5 版功能，您可能需要執行某些遷移作業。

本主題說明第 3.5 版中的變更，以及您在從第 3 版遷移環境或程式碼時可能需要執行的作業。

## 3.5 版的變更
<a name="net-dg-v35-changes"></a>

以下說明 3.5 適用於 .NET 的 AWS SDK 版中已變更或尚未變更的內容。

### .NET Framework 和 .NET Core
<a name="net-dg-v35-changes-dotnet"></a>

.NET Framework 和 .NET Core 支援並未變更。

### Xamarin
<a name="net-dg-v35-changes-xamarin"></a>

Xamarin 專案 (全新和現有) 必須將目標鎖定於 .NET Standard 2.0。請參閱[Xamarin.Forms 中的 .NET Standard 2.0 支援](https://docs.microsoft.com/en-us/xamarin/xamarin-forms/internals/net-standard)和 [.NET 實作支援](https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation-support)。

### Unity
<a name="net-dg-v35-changes-unity"></a>

Unity 應用程式必須將目標鎖定於使用 Unity 2018.1 或更新版本的 .NET Standard 2.0 或 .NET 4.x 描述檔。如需詳細資訊，請參閱 [.NET 描述檔支援](https://docs.unity3d.com/2020.1/Documentation/Manual/dotnetProfileSupport.html)。此外，如果您使用 **IL2CPP** 進行建置，則必須新增 *link.xml* 檔案來停用程式碼分割，如[從 Unity、Xamarin 或 UWP 參考 適用於 .NET 的 AWS SDK 標準 2.0](https://aws.amazon.com/blogs/developer/referencing-the-aws-sdk-for-net-standard-2-0-from-unity-xamarin-or-uwp) 中所述。將程式碼移植到其中一個建議的程式碼基底之後，Unity 應用程式就可以存取該開發套件提供的所有服務。

由於 Unity 支援 .NET Standard 2.0，開發套件第 3.5 版的，**AWSSDK.Core** 套件不再具有 Unity 專用程式碼，包括某些較高高階的功能。為了提供更好的轉換，所有***舊版*** Unity 程式碼都可以在 [aws/aws-sdk-unity-net](https://github.com/aws/aws-sdk-unity-net) GitHub 儲存庫中參考。如果您發現缺少功能會影響使用 Unity AWS 的 ，您可以在 https：//[https://github.com/aws/dotnet/issues](https://github.com/aws/dotnet/issues) 提出功能請求。

另請參閱[Unity 支援的特殊考量](unity-special.md)。

### 通用 Windows 平台 (UWP)
<a name="net-dg-v35-changes-uwp"></a>

將 UWP 應用程式的目標鎖定於 [16299 版或更新版本](https://docs.microsoft.com/en-us/windows/uwp/updates-and-versions/choose-a-uwp-version) (Fall Creators Update，2017 年 10 月發佈的 1709 版)。

### Windows Phone 和 Silverlight
<a name="net-dg-v35-changes-phone-silverlight"></a>

3.5 版 適用於 .NET 的 AWS SDK 的 不支援這些平台，因為 Microsoft 不再積極開發這些平台。如需詳細資訊，請參閱下列內容：
+ [Windows 10 Mobile 終止支援](https://support.microsoft.com/en-us/help/4485197/windows-10-mobile-end-of-support-faq)
+ [Silverlight 終止支援](https://support.microsoft.com/en-us/help/4511036/silverlight-end-of-support)

### 舊版可攜式類別程式庫 （設定檔型 PCLs)
<a name="net-dg-v35-changes-pcl"></a>

考慮將程式庫的目標重新鎖定於 .NET Standard。如需詳細資訊，請參閱來自 Microsoft 的[與可攜式類別程式庫的比較](https://docs.microsoft.com/en-us/dotnet/standard/net-standard#comparison-to-portable-class-libraries)。

### Amazon Cognito Sync Manager 和 Amazon Mobile Analytics Manager
<a name="net-dg-v35-changes-cog-ma"></a>

簡化使用 Amazon Cognito Sync 和 Amazon Mobile Analytics 的高階抽象概念會從 3.5 版中移除 適用於 .NET 的 AWS SDK。 AWS AppSync 是 Amazon Cognito Sync 的首選替代項目。Amazon Pinpoint 是 Amazon Mobile Analytics 的首選替代。

如果您的程式碼受到 AWS AppSync 和 Amazon Pinpoint 缺少更高層級的程式庫程式碼的影響，您可以記錄您對下列其中一個或兩個 GitHub 問題的興趣：[https://github.com/aws/dotnet/issues/20](https://github.com/aws/dotnet/issues/20)：// 和 [https://github.com/aws/dotnet/issues/19](https://github.com/aws/dotnet/issues/19)。您也可以從下列 GitHub 儲存庫取得 Amazon Cognito Sync Manager 和 Amazon Mobile Analytics Manager 的程式庫：[aws/amazon-cognito-sync-manager-net](https://github.com/aws/amazon-cognito-sync-manager-net) 和 [aws/aws-mobile-analytics-manager-net](https://github.com/aws/aws-mobile-analytics-manager-net)。

## 遷移同步程式碼
<a name="net-dg-v35-migrate-code"></a>

3.5 版同時 適用於 .NET 的 AWS SDK 支援 .NET Framework 和 .NET Standard （透過 .NET Core 版本，例如 .NET Core 3.1、.NET 5 等）。符合 .NET Standard 的 SDK 變化僅提供非同步方法，因此如果您想要利用 .NET Standard，您必須變更同步程式碼，使其以非同步方式執行。

下列程式碼片段說明如何將同步程式碼變更為非同步程式碼。這些程式碼片段中的程式碼用於顯示 Amazon S3 儲存貯體的數量。

原始程式碼會呼叫 [ListBuckets](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/S3/MS3ListBuckets.html)。

```
private static ListBucketsResponse MyListBuckets()
{
  var s3Client = new AmazonS3Client();
  var response = s3Client.ListBuckets();
  return response;
}

// From the calling function
ListBucketsResponse response = MyListBuckets();
Console.WriteLine($"Number of buckets: {response.Buckets.Count}");
```

若要使用開發套件第 3.5 版，請改為呼叫 [ListBucketsAsync](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/S3/MS3ListBucketsAsyncCancellationToken.html)。

```
private static async Task<ListBucketsResponse> MyListBuckets()
{
  var s3Client = new AmazonS3Client();
  var response = await s3Client.ListBucketsAsync();
  return response;
}


// From an **asynchronous** calling function
ListBucketsResponse response = await MyListBuckets();
Console.WriteLine($"Number of buckets: {response.Buckets.Count}");

// OR From a **synchronous** calling function
Task<ListBucketsResponse> response = MyListBuckets();
Console.WriteLine($"Number of buckets: {response.Result.Buckets.Count}");
```