AWS的奇怪版本控制问题

时间:2014-04-21 21:19:06

标签: c# amazon-web-services amazon-s3

我刚刚升级到亚马逊的最新SDK 2.0.13.2。不幸的是,我现在遇到了Amazon.S3.Model.PutObjectRequest类的问题。它拒绝识别Timeout属性。如果我有

Amazon.S3.Model.PutObjectRequest titledRequest = new PutObjectRequest()
{
    BucketName = bucketName,
    Key = newFileName,
    ContentType = packet.ContentType,
    InputStream = new MemoryStream(packet.Buffer)
};

然后一切顺利。但是一旦我添加

titledRequest.Timeout = new TimeSpan(0, 15, 0);

仍在编译,但在运行时用

炸毁
  

找不到方法:'Void Amazon.S3.Model.PutObjectRequest.set_Timeout(System.Nullable`1)'。

特别令人沮丧的是,如果我注释掉设置超时的行,并进入设置此项的方法,我可以点击Amazon.S3.Model.PutObjectRequest,点击F-12并查看类型的元数据,并清楚地看到Timeout属性。然而,如果我尝试使用它,或者甚至在快速监视窗口中查看属性,我会得到上面的错误。

我尝试使用NuGet清理,重建,卸载和重新安装AWSSDK,甚至重新启动。什么都行不通。

1 个答案:

答案 0 :(得分:0)

在其他人遇到类似问题的可能性非常小的情况下添加我自己的答案。

我们的许多不同项目的.net版本为3.5,4.0和4.5。因此,当NuGet试图找出哪个版本来提供哪个项目时,结果发现编译器认为我在旧版本的AWSSDK上,在PutObjectRequest对象上有这个超时属性,而在运行时我们遇到了最新版本,具有此属性,因此运行时错误。