AWS Developer Tools Blog

AWS SDK for .NET v3.5 Preview

Today, we have published a preview release of version 3.5 of the AWS SDK for .NET. This primary objective of this version is to transition support for all non-Framework versions of the SDK to .NET Standard 2.0. If you are currently using a .NET Framework or .NET Core target, no changes are required. We are doing this to accelerate feature development and offer newer functionality to a greater set of customers going forward. What does this mean for you?

Platform Requirements

.NET Framework, .NET Core, .NET Standard

No changes. You should experience no breakages, and no action is required.

Xamarin

If you are starting a new project, target .NET Standard 2.0. If you have an existing project, port your existing solution to .NET Standard 2.0.

Migration guide
Platform support

Unity

Target the .NET Standard 2.0 or .NET 4.x profiles using Unity 2018.1 or later. As noted in a tutorial blog post, if you are using IL2CPP to build, you must disable code stripping by adding a link.xml file.

Universal Windows Platform (UWP)

Target your UWP application to version 16299 or later (Fall Creators update, version 1709, released October 2017).

Windows Phone, Silverlight

These platform targets are discouraged by Microsoft, and are not undergoing active development. Therefore, these platforms have been dropped and there is no migration path.

Windows Phone EOL
Silverlight EOL

Legacy Portable Class Libraries (Profile-Based PCLs)

Consider re-targeting your library to .NET Standard, as per guidance from Microsoft.

Asynchronous Programming

The .NET Standard version of the AWS SDK for .NET only supports asynchronous calls to AWS services. This is preferred pattern for making web calls for performance and scalability. If your application is currently using synchronous calls, the code will need to be changed to use the asynchronous versions.

Unity has access to all services

Unity has historically only had access to 13 services offered by AWS. With the transition to .NET Standard and use of version 3.5 of the AWS SDK for .NET binaries, Unity customers will have access to all services offered by AWS at the same time and at the same support level as all other supported platforms.

Archival of Unity core

Unity (since 2018.1) is supported via .NET Standard 2.0. As a result, all-Unity specific code in AWSSDK.Core has been removed. This includes some higher-level functionality that was included in that codebase. To provide a better transition, all the Unity code has been extracted into a GitHub archive repository for reference. If there is missing functionality in the .NET Standard version of the SDK impacting your use of AWS with Unity, please file a feature request.

Unity Archive: https://github.com/aws/aws-sdk-unity-net

Extraction of Cognito Sync Manager, Mobile Analytics Manager

These higher level abstractions allowing easier use of Amazon Cognito Sync and Amazon Mobile Analytics have been removed from the SDK. These libraries will be made available in separate repositories and distributed via new NuGet packages. Amazon Pinpoint is the preferred replacement for Amazon Mobile Analytics. AWS AppSync is the preferred replacement for Amazon Cognito Sync. We are aware that there are gaps in support for these new services in the SDK. If you are affected by the lack of higher-level library code for these services, please upvote the pinned feature issues and add relevant comments.

Amazon Pinpoint Higher Level library tracking issue
Amazon AppSync Higher Level Library/Amplify support tracking issue

Cognito Sync Manager: https://github.com/aws/amazon-cognito-sync-manager-net
Mobile Analytics Manager: https://github.com/aws/aws-mobile-analytics-manager-net

Try it out!

We encourage you to try out the preview to ensure a smooth transition to the new version when it goes GA. The NuGet packages are using the version 3.5.0.0-beta. You will need to enable “preview versions” to get access to this version. The beta is currently based on version 3.3.633.0 of the SDK (Released 2020-01-14).

If you need to use DLLs (for example, for Unity), you can get the .NET Standard 2.0 binaries here.

If you encounter ANY issues not documented in this post, please file a issue in the aws-sdk-net repository on GitHub.