本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
遷移到第 3.5 版AWS SDK for .NET
AWS SDK for .NET 第 3.5 版將該開發套件的所有非架構變異支援轉換到 .NET Standard 2.0
本主題說明第 3.5 版中的變更,以及您在從第 3 版遷移環境或程式碼時可能需要執行的作業。
第 3.5 版有什麼變更
以下說明 AWS SDK for .NET 第 3.5 版中已變更或未變更的項目。
.NET Framework 和 .NET Core
.NET Framework 和 .NET Core 支援並未變更。
Xamarin
Xamarin 專案 (全新和現有) 必須將目標鎖定於 .NET Standard 2.0。請參閱Xamarin.Forms 中的 .NET Standard 2.0 支援
Unity
Unity 應用程式必須將目標鎖定於使用 Unity 2018.1 或更新版本的 .NET Standard 2.0 或 .NET 4.x 描述檔。如需詳細資訊,請參閱 .NET 描述檔支援
因為統一支援 .NET 標準 2.0,AWSSDK.core開發套件第 3.5 版的套件不再具有 Unity 專用程式碼,包括某些較高階的功能。為了提供更好的過渡,所有的遺產Unity 程式碼可供參考aw/aws-sdk-unity-net
另請參閱Unity 支援的特殊考量。
通用 Windows 平台 (UWP)
將 UWP 應用程式的目標鎖定於 16299 版或更新版本
Windows Phone 和 Silverlight
AWS SDK for .NET 第 3.5 版不支援這些平台,因為 Microsoft 不再主動開發這些平台。如需詳細資訊,請參閱下列內容:
舊式可攜式類別庫 (基於設定檔的 PCL)
考慮將程式庫的目標重新鎖定於 .NET Standard。如需詳細資訊,請參閱來自 Microsoft 的與可攜式類別程式庫的比較
Amazon Cognito 同步管理器和 Amazon Mobile Analytics 管理器
第 3.5 版和 Amazon Cognito Sync 和 Amazon 行動分析方式的高階抽象概念AWS SDK for .NET。AWS AppSync是 Amazon Cognito Sync 的慣用替代產品。Amazon Pinpoint 是 Amazon Mobile Analytics 的首選替代品。
如果程式碼受到缺乏較高階程式碼所影響AWS AppSync和 Amazon Pinpoint,您可以在下列其中之一或兩者中記錄您關注的項目 GitHub 問題:https://github.com/aws/dotnet/issues/20
遷移同步程式碼
第 3.5 版AWS SDK for .NET支持 .NET 框架和 .NET 標準(通過 .NET 核心版本,如 .NET 核心 3.1,.NET 5 等)。符合 .NET 標準的 SDK 變體僅提供非同步方法,因此,如果您想要利用 .NET 標準,則必須變更同步程式碼,以便非同步執行。
下列程式碼片段說明如何將同步程式碼變更為非同步程式碼。這些片段中的程式碼可用來顯示 Amazon S3 儲存貯體的數量。
原始程式碼會呼叫ListBuckets。
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反之。
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}");