在我的代码中,我同时使用这两个名称空间,并且在我尝试使用两个名称空间中都存在的CopyStatus之前,它们都可以正常工作。这段代码在具有完全相同的名称空间的LINQPad5中可以正常工作,但是在VS2019中,我发现它无法对Storage.File类中的CopyState进行罚款。
using Microsoft.WindowsAzure.Storage.Blob;
using Microsoft.WindowsAzure.Storage.File;
LINQPad5中的代码
CloudFile file = share.GetRootDirectoryReference().GetFileReference(myfile);
string blobSas = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy()
{
Permissions = SharedAccessBlobPermissions.Read,
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24)
});
Uri blobSasUri = new Uri(blob.StorageUri.PrimaryUri.ToString() + blobSas);
file.StartCopy(blobSasUri);
file.FetchAttributes();
int count=0;
while (file.CopyState.Status != Microsoft.WindowsAzure.Storage.File.CopyStatus.Success)
{
Thread.Sleep(1000);
Console.WriteLine(@"{0} - Sleep one second", count++.ToString());
file.FetchAttributes();
}
但是这个(几乎)相同的代码在VS2109中不起作用。
file.StartCopy(bpe.BlobUri);
file.FetchAttributes();
while (file.CopyState.Status != Microsoft.WindowsAzure.Storage.File.CopyStatus.Success)
显示Microsoft.WindowsAzure.Storage.File。 CopyStatus 的图片不 存在。
答案 0 :(得分:1)
此问题可能主要是由于VS 2019中缺少一个块,我建议安装最新的WindowsAzure.storage Nugget here 重新启动VS,然后重试。
答案 1 :(得分:1)
解决方案是升级到.NET Framework 4.7.2,并在NuGet中安装Microsoft.WindowsAzure.Storage.DataMovement而不是Microsoft.WindowsAzure.Storage。
然后限定using语句:
using AF=Microsoft.WindowsAzure.Storage.File;
using AB=Microsoft.WindowsAzure.Storage.Blob;