我在.NET v4.8和.NET v5.0/.NETCore v3.1之间的AWS SDK中发现了一个突破性的变化。根据官方博客中的教程,我发现我无法使用同步方法SelectObjectContent
编译/运行.NET v5.0或.NETCore v3.1中的示例。AWS SDK API很清楚这是一个可调用的方法,但我的Visual Studio/Ride看到它是作为internal
方法实现的,所以我无法干净地访问它。事实上,我甚至无法编译。
然而,经过详尽的尝试,我意识到要回到.NET Framework v4.8版本,它就像广告中所说的那样工作,甚至使用了相同的AWS SDK nuget(v3.7.0.21(
是否有访问该功能的首选方式,或者是否意外引入了未记录的破坏性更改?我不知道如何区分这是.NET Framework还是AWS SDK的问题,所以我不确定在哪里报告。代码来自AWS,但这取决于.NET Framework版本。
同步方法已经不复存在,因为它适用于.NET/.NET Core项目和相应的SDK。
为AWS工作的GitHub用户normj在一个线程中声明:
.NET Core版本只有异步的原因是.NET Core中可用的底层http客户端只支持异步操作。我们讨论了在.NET核心版本中保留同步方法,并让它们只调用异步版本,然后阻止。问题是SDK没有遵循平台的最佳实践,更重要的是,它可能会掩盖潜在的性能问题。
因此,您遵循的指南不一定是错误的,但可能有点误导——您只需要使用任何可用的指南。
此外,尽管使用了相同版本的AWSSDK,但根据项目的目标框架,它将引用包的lib
文件夹中的不同DLL,这解释了为什么该方法对于.NET framework项目可用,而对于.NET Core/.NET则不可用。Visual Studio中解决方案资源管理器中DLL的属性也会指示这一点(请注意Path属性(。