The client issues detailed in this blog have been resolved in version 2.0.4 or earlier, and you can obtain the latest NuGet Package here.

We recently released the 2.0 version of the Windows Azure Storage Client Library. This is our largest update to our .NET library to date which includes new features, broader platform compatibility, and revisions to address the great feedback you’ve given us over time. For more about this release see here. For information regarding breaking changes see here.

This SDK 2.0 release contains a few known issues that will be addressed in the next release of the libraries and are detailed below.

Known Issues

Service Client Retry Policy does not support null

The Cloud[Blob|Queue|Table]Client.RetryPolicy does not support null, if you wish to disable retries simply use RetryPolicies.NoRetry (client.RetryPolicy = new NoRetry()).

CloudStorageAccount.Parse cannot parse DevelopmentStorageAccount strings if a proxy is not specified.

CloudStorageAccount.Parse() and TryParse() do not support DevelopmentStorageAccount strings if a proxy is not specified. CloudStorageAccount.DevelopmentStorageAccount.ToString() will serialize to the string: “UseDevelopmentStorage=true” which illustrate this particular issue. Passing this string into CloudStorageAccount.Parse() or TryParse () will throw a KeyNotFoundException.

Summary

We continue to work hard on delivering a first class development experience for the .Net community to work with Windows Azure Storage. We will address these issues in upcoming releases of the SDK and on GitHub.

It calls the internal constructor "DynamicTableEntity(string partitionKey, string rowKey, DateTime timestamp, string etag, IDictionary<string, EntityProperty> properties)" with DateTime.MinValue as the timestamp parameter, but this parameter is then cast to a DateTimeOffset. The minimum value of a DateTime is invalid as a DateTimeOffset and the constructor throws.

I have upgraded my solution to use Microsoft.WindowsAzure.Storage (the new 2.0 library) via NUGET.

It seems that the DiagnosticMonitor depends on version 1.7 though – and the solution will not compile – and I get the following error:

Error 3 The type 'Microsoft.WindowsAzure.CloudStorageAccount' is defined in an assembly that is not referenced. You must add a reference to assembly 'Microsoft.WindowsAzure.StorageClient, Version=1.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

@ Chris – You are correct, the code above was taken from our test suite which has access to the internals, we will correct this blog post. The accessible work around is to use the connection string in the format of :

This issue has been reported, the fix is in testing / signing currently. We expect it will be live on nuget / github by mid next week.

@Matt, @ victor

Unfortunately the current Diagnostics still has a dependency on 1.7( this dependency will be updated in the future). The current workaround is to reference both 1.7 and 2.0 in your project. This is part of the reason behind the assembly name being changed to .Storage.dll rather than StorageClient.

I encountered the following issue since upgrading: When I use numeric nullable properties in TableEntities (int?, long?), the insertion part works as expected, but when I retrieve entities, those fields all have null values instead of the value present in table storage.

@Yohann – clouddrive has not been updated to use the latest version yet and hence it does not support the 2.0 client library (which uses 2012-02-12 REST version). However, you can use both libraries together and continue using the older client lib for use with clouddrive (and diagnostics) but use the newer 2.0 lib for everything else in your app.

There seems to be an issue with {Begin,End}ListTablesSegmented as well; EndListTablesSegmented expects a ResultSegment<DynamicTableEntity>, but BeginListTablesSegmented returns a TableQuerySegment<DynamicTableEntity>.

As such, using them results in an InvalidCastException:

Unable to cast object of type

'Microsoft.WindowsAzure.Storage.Core.Executor.ExecutionState`1[Microsoft.WindowsAzure.Storage.Table.TableQuerySegment`1[Microsoft.WindowsAzure.Storage.Table.DynamicTableEntity]]' to type