

 适用于 .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的特殊注意事项
<a name="special-considerations"></a>

本部分包含普通配置或程序不恰当或不够充分的特殊情况下的注意事项。

**Topics**
+ [获取 AWSSDK 程序集](net-dg-obtain-assemblies.md)
+ [

# 访问应用程序中的凭证和配置文件
](creds-locate.md)
+ [Unity 支持](unity-special.md)
+ [Xamarin 支持](xamarin-special.md)

# 获取用于适用于 .NET 的 Amazon SDK的程序集
<a name="net-dg-obtain-assemblies"></a>

本主题介绍如何获取 AWSSDK 程序集并将其存储在本地，以便在项目中使用。这**不是**处理软件开发工具包参考的推荐方法，但在某些环境中却是必需的。

**注意**  
处理软件开发工具包参考的推荐方法是仅下载并安装每个项目所需的 NuGet 程序包。[通过 NuGet 安装 AWSSDK 程序包](net-dg-install-assemblies.md)中介绍了这种方法。

如果您不能或不允许您按项目下载和安装 NuGet 程序包，则可以使用以下选项。

## 下载并解压缩 ZIP 文件
<a name="download-zip-files"></a>

（请记住，这不是处理对 适用于 .NET 的 Amazon SDK 的引用的[推荐方法](net-dg-install-assemblies.md)。）

1. 下载以下 ZIP 文件之一：
   + [aws-sdk-net8.0.zip](https://sdk-for-net.amazonwebservices.com/latest/v3/aws-sdk-net8.0.zip) - 支持 .NET 8 及更高版本的程序集。
   + [aws-sdk-netcoreapp3.1.zip](https://sdk-for-net.amazonwebservices.com/latest/v3/aws-sdk-netcoreapp3.1.zip) - 支持 .NET Core 3.1 及更高版本的程序集。
   + [aws-sdk-netstandard2.0.zip](https://sdk-for-net.amazonwebservices.com/latest/v3/aws-sdk-netstandard2.0.zip) - 支持 .NET Standard 2.0 和 2.1 的程序集。
   + [aws-sdk-net45.zip](https://sdk-for-net.amazonwebservices.com/latest/v3/aws-sdk-net45.zip) - 支持 Framework 4.5 及更高版本的程序集。
   + [aws-sdk-net35.zip](https://sdk-for-net.amazonwebservices.com/latest/v3/aws-sdk-net35.zip) - 支持 .NET Framework 3.5 的程序集。
**警告**  
自 2024 年 8 月 15 日起，适用于 .NET 的 Amazon SDK 将终止对 .NET Framework 3.5 的支持，并将支持的 .NET Framework 最低版本更改为 4.7.2。有关更多信息，请参阅博客文章 [Important changes coming for .NET Framework 3.5 and 4.5 targets of the 适用于 .NET 的 Amazon SDK](https://www.amazonaws.cn/blogs/developer/important-changes-coming-for-net-framework-3-5-and-4-5-targets-of-the-aws-sdk-for-net/)。

1. 将程序集解压缩到文件系统上的某个“下载”文件夹；什么位置都可以。记下此文件夹。

1. 在设置项目时，可以从该文件夹中获取所需的程序集，如[在没有 NuGet 的情况下安装 AWSSDK 程序集](net-dg-install-without-nuget.md)中所述。

# 访问应用程序中的凭证和配置文件
<a name="creds-locate"></a>

使用凭据的首选方法是允许为您查找和检索凭证，如中所述[凭证和配置文件解析](creds-assign.md)。 适用于 .NET 的 Amazon SDK 

但是，您也可以将应用程序配置为主动检索配置文件和证书，然后在创建 Amazon 服务客户端时明确使用这些凭据。

要主动检索个人资料和证书，请使用 [Amazon.Runtime 中的类。 CredentialManagement](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Runtime/NRuntimeCredentialManagement.html)命名空间。
+ 要在使用凭据文件格式（[默认位置的共享 Amazon 凭 Amazon 据文件或自定义凭据文件）的文件中](creds-file.md)查找配置文件，请使用[SharedCredentialsFile](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Runtime/TSharedCredentialsFile.html)类。为简洁起见，这种格式的文件有时在此文本中简称为*凭证文件*。
+ 要在 SDK 商店中查找配置[SDKCredentials文件，请使用 Net File](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Runtime/TNetSDKCredentialsFile.html) 类。
+ 要根据类属性的配置同时在凭证文件和 SDK Store 中进行搜索，请使用[CredentialProfileStoreChain](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfileStoreChain.html)类。

  您可以使用该类来查找配置文件。您也可以使用该类直接请求 Amazon 凭证，而不是使用该`AWSCredentialsFactory`类（如下所述）。
+ 要从配置文件中检索或创建各种类型的凭证，请使用 F [AWSCredentialsactor](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Runtime/TAWSCredentialsFactory.html) y 类。

以下部分提供了这些类的示例。

## 课堂示例 CredentialProfileStoreChain
<a name="creds-locate-chain"></a>

您可以使用或[TryGetProfile](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Runtime/MCredentialProfileStoreChainTryGetProfileStringCredentialProfile.html)方法从[CredentialProfileStoreChain](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfileStoreChain.html)班级中获取凭证[TryGetAWSCredentials](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Runtime/MCredentialProfileStoreChainTryGetAWSCredentialsStringAWSCredentials.html)或配置文件。类的 `ProfilesLocation` 属性将决定方法的行为，如下所示：
+ 如果`ProfilesLocation`为空或为空，则在平台支持的情况下搜索 SDK Store，然后在默认位置搜索共享 Amazon 凭据文件。
+ 如果 `ProfilesLocation` 属性包含值，请搜索该属性中指定的凭证文件。

### 从 SDK 商店或共享 Amazon 凭证文件获取凭证
<a name="creds-locate-chain-get-credentials-default-location"></a>

本示例向您展示了如何使用 `CredentialProfileStoreChain` 类获取凭证，然后使用这些凭证创建 [AmazonS3Client](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/S3/TS3Client.html) 对象。这些凭证可以来自 SDK Store，也可以来自默认位置的共享 Amazon 凭证

此示例还使用了 [Amazon.Runtime。 AWSCredentials](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Runtime/TAWSCredentials.html)班级。

```
var chain = new CredentialProfileStoreChain();
AWSCredentials awsCredentials;
if (chain.TryGetAWSCredentials("some_profile", out awsCredentials))
{
    // Use awsCredentials to create an Amazon S3 service client
    using (var client = new AmazonS3Client(awsCredentials))
    {
        var response = await client.ListBucketsAsync();
        Console.WriteLine($"Number of buckets: {response.Buckets.Count}");
    }
}
```

### 从 SDK 商店或共享 Amazon 凭证文件中获取个人资料
<a name="creds-locate-chain-get-profile-default-location"></a>

此示例向您展示如何使用该 CredentialProfileStoreChain 类获取个人资料。这些凭据可以来自 SDK Store，也可以来自默认位置的共享 Amazon 凭据文件。

此示例还使用了该[CredentialProfile](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfile.html)类。

```
var chain = new CredentialProfileStoreChain();
CredentialProfile basicProfile;
if (chain.TryGetProfile("basic_profile", out basicProfile))
{
    // Use basicProfile
}
```

### 从自定义凭证文件获取凭证
<a name="creds-locate-chain-get-credentials-alternate-location"></a>

此示例向您展示如何使用 CredentialProfileStoreChain 类获取证书。凭证来自使用 Amazon 凭证文件格式但位于备用位置的文件。

此示例还使用了 [Amazon.Runtime。 AWSCredentials](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Runtime/TAWSCredentials.html)班级。

```
var chain = new
    CredentialProfileStoreChain("c:\\Users\\sdkuser\\customCredentialsFile.ini");
AWSCredentials awsCredentials;
if (chain.TryGetAWSCredentials("basic_profile", out awsCredentials))
{
    // Use awsCredentials to create an AWS service client
}
```

## 类 SharedCredentialsFile 和 AWSCredentials工厂的示例
<a name="creds-locate-cred-shared-file"></a>

### 使用课程创建 Amazons3Client SharedCredentialsFile
<a name="creds-locate-cred-shared-file-create-s3-client"></a>

此示例向您展示了如何在共享 Amazon 凭证文件中查找个人资料，根据该配置文件创建 Amazon 凭证，然后使用这些凭证创建 [Amazons3C](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/S3/TS3Client.html) lient 对象。该示例使用该[SharedCredentialsFile](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Runtime/TSharedCredentialsFile.html)类。

此示例还使用[CredentialProfile](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfile.html)类和 [Amazon.Runtime。 AWSCredentials](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Runtime/TAWSCredentials.html)班级。

```
CredentialProfile basicProfile;
AWSCredentials awsCredentials;
var sharedFile = new SharedCredentialsFile();
if (sharedFile.TryGetProfile("basic_profile", out basicProfile) &&
    AWSCredentialsFactory.TryGetAWSCredentials(basicProfile, sharedFile, out awsCredentials))
{
    // use awsCredentials to create an Amazon S3 service client
    using (var client = new AmazonS3Client(awsCredentials, basicProfile.Region))
    {
        var response = await client.ListBucketsAsync();
        Console.WriteLine($"Number of buckets: {response.Buckets.Count}");
    }
}
```

**注意**  
[Net SDKCredentials File](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/Runtime/TNetSDKCredentialsFile.html) 类的使用方式完全相同，唯一的不同是你要实例化一个新的 Net SDKCredentials File 对象而不是一个 SharedCredentialsFile 对象。

# Unity 支持的特殊注意事项
<a name="unity-special"></a>

在 Unity 应用程序中使用 适用于 .NET 的 Amazon SDK 和 [.NET Standard 2.0](https://docs.microsoft.com/en-us/dotnet/standard/net-standard) 时，您的应用程序必须直接引用适用于 .NET 的 Amazon SDK程序集（DLL 文件），而不是使用 NuGet。鉴于此要求，以下是您需要执行的重要操作。


+ 您需要获取适用于 .NET 的 Amazon SDK程序集并将其应用于您的项目。有关如何操作的信息，请参阅[获取 AWSSDK 程序集](net-dg-obtain-assemblies.md)主题中的[下载并解压缩 ZIP 文件](net-dg-obtain-assemblies.md#download-zip-files)。
+ 您需要在 Unity 项目中加入以下 DLL，以及 **AWSSDK.Core** 和您正在使用的其它 Amazon 服务的 DLL。从适用于 .NET 的 Amazon SDK版本 3.5.109 开始，.NET Standard ZIP file 文件包含这些其它的 DLL。
  + [Microsoft.Bcl.AsyncInterfaces.dll](https://www.nuget.org/packages/Microsoft.Bcl.AsyncInterfaces/)
  + [System.Runtime.CompilerServices.Unsafe.dll](https://www.nuget.org/packages/System.Runtime.CompilerServices.Unsafe/)
  + [System.Threading.Tasks.Extensions.dll](https://www.nuget.org/packages/System.Threading.Tasks.Extensions/)
+ 如果您使用 [IL2CPP](https://docs.unity3d.com/Manual/IL2CPP.html) 构建 Unity 项目，则必须向 Asset 文件夹中添加 `link.xml` 文件以防止代码剥离。`link.xml` 文件必须列出您正在使用的所有 AWSSDK 程序集，并且每个程序集都必须包含 `preserve="all"` 属性。下面的代码片段显示了此示例文件。

  ```
  <linker>
      <assembly fullname="AWSSDK.Core" preserve="all"/>
      <assembly fullname="AWSSDK.DynamoDBv2" preserve="all"/>
      <assembly fullname="AWSSDK.Lambda" preserve="all"/>
  </linker>
  ```

**注意**  
要阅读与此要求相关的有趣背景信息，请参阅位于以下位置的文章：[https://aws.amazon.com/blogs/developer/referencing-the-aws-sdk-for-net-standard-2-0-from-unity-xamarin-or-uwp/](https://www.amazonaws.cn/blogs/developer/referencing-the-aws-sdk-for-net-standard-2-0-from-unity-xamarin-or-uwp/)。

除了这些特殊注意事项外，有关将 Unity 应用程序迁移到适用于 .NET 的 Amazon SDK版本 3.5 的信息，请参阅[3.5 版的更改内容](net-dg-v35.md#net-dg-v35-changes)。

# Xamarin 支持的特殊注意事项
<a name="xamarin-special"></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)。

另请参阅有关[便携式类库和 Xamarin](net-dg-supported-platforms.md#portable-class-library) 的信息。