2

我发现 .NET v4.8 和 .NET v5.0 / .NETCore v3.1 之间的 AWS SDK 似乎发生了重大变化。按照官方博客中的教程,我发现我无法使用同步方法编译/运行 .NET v5.0 或 .NETCore v3.1 中的示例SelectObjectContent。AWS SDK API 很清楚这是一个可调用的方法,但我的 Visual Studio/Rider 看到它是作为一种internal方法实现的,所以我无法干净地访问它。事实上,我什至无法编译。

然而,经过详尽的尝试后,我意识到回到 .NET Framework v4.8,它的工作原理与宣传的一样,即使使用相同的 AWS SDK nuget (v3.7.0.21)。

是否有访问该功能的首选方式,或者是否意外引入了未记录的重大更改?我不确定如何区分这是 .NET Framework 还是 AWS SDK 的问题,所以我不确定在哪里报告。代码来自 AWS,但这取决于 .NET Framework 版本。

4

1 回答 1

2

同步方法已不复存在,因为它旨在为 .NET/.NET Core 项目和相应的 SDK 提供这种方式。

为 AWS 工作的 GitHub 用户 normj在一个线程中表示

.NET Core 版本只有 async 的原因是因为 .NET Core 中可用的底层 http 客户端只支持异步操作。我们讨论过将同步方法保留在 .NET Core 版本中,让它们只调用异步版本然后阻塞。问题在于 SDK 不会遵循平台的最佳实践,更重要的是它可能掩盖潜在的性能问题。

因此,您遵循的指南不一定是错误的,但可能会有点误导 - 您只需使用您可以使用的指南。

此外,尽管使用相同版本的 AWSSDK,但根据您的项目所针对的框架,它将引用lib包文件夹中的不同 DLL,这解释了为什么对于 .NET Framework 项目该方法可用,但对于 . NET Core/.NET,它不是。Visual Studio 的解决方案资源管理器中的 DLL 属性也将表明这一点(注意 Path 属性)。

于 2021-05-14T00:43:30.597 回答