本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
迁移到 适用于 .NET 的 AWS 开发工具包 的版本 3.5
适用于 .NET 的 AWS 开发工具包的版本 3.5 通过将对所有开发工具包的非 Framework 变体的支持转换为 .NET Standard 2.0
本主题介绍版本 3.5 中的更改以及从版本 3 迁移环境或代码可能需要执行的工作。
版本 3.5 的更改内容
以下内容介绍适用于 .NET 的 AWS 开发工具包版本 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 配置文件支持
由于 Unity 支持 .NET Standard 2.0,因此开发工具包版本 3.5 的 AWSSDk.core 程序包不再具有 Unity 特定的代码,包括一些更高级别的功能。为了提供更好的过渡,所有传统Unity 代码都可以在 aws/aws-sdk-unity-net 存储库中引用。
另请参阅Unity 支持的特殊注意事项。
通用 Windows 平台 (UWP)
将您的 UWP 应用程序指向版本 16299 或更高版本
Windows Phone 和 Silverlight
适用于 .NET 的 AWS 开发工具包的版本 3.5 不支持这些平台,因为 Microsoft 不再积极开发它们。有关更多信息,请参阅下列内容:
传统可移植类库(基于配置文件的 PCLs)
考虑将您的库重定向到 .NET 标准。有关更多信息,请参阅 Microsoft 提供的可移植类库的比较
Amazon Cognito Sync 管理器和 Amazon Mobile Analytics 管理器
使 Amazon Cognito Sync 和 Amazon Mobile Analytics 易于使用的高级抽象已从适用于 .NET 的 AWS 开发工具包版本 3.5 中删除。AWS AppSync 是 Amazon Cognito Sync 的首选替代品。 Amazon Pinpoint 是 Amazon Mobile Analytics 的首选替代品。
如果您的代码受到缺乏 AWS AppSync 和 Amazon Pinpoint 的更高级别库代码的影响,您可以记录您对以下一个或两个 GitHub 问题的兴趣:https://github.com/aws/dotnet/issues/20 和
迁移同步代码
适用于 .NET 的 AWS 开发工具包的版本3.5 仅支持对 AWS 服务的异步调用。您必须使用版本 3.5 更改想要运行的同步代码,以使它异步运行。
以下代码段展示如何将同步代码更改为异步代码。这些代码段中的代码用于显示 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}");