В моем коде я использую оба этих пространства имен, и все работает нормально, пока я не попытаюсь использовать CopyStatus, существующий в обоих. Этот фрагмент кода отлично работает в LINQPad5 с точно такими же пространствами имен, однако в VS2019 я обнаружил, что он не может определить CopyState в классе Storage.File.
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.Статус копирования не существует.
Эта проблема может быть в основном вызвана отсутствием самородка из VS 2019, я бы рекомендовал установить последнюю версию WindowsAzure.storage Nugget found здесь Перезапустите VS и повторите попытку.
Не уверен, актуально это или нет, но я запустил это решение в рамках предварительной версии VS2019, а затем вчера обновился до VS2019 Enterprise.
Я создал новое консольное приложение и загрузил библиотеку .WindowsAzure.Storage, это автоматически добавило ссылку на этот ..\packages\WindowsAzure.Storage.9.3.3\lib\net45\Microsoft.WindowsAzure. Storage.dll, хотя мое решение — фреймворк v4.6.1. Когда я смотрю на библиотеку, которую использует LINQPad5, она отличается. lib\net452\Microsoft.Azure. Storage.File.dll. Таким образом, LP5 использует конкретную .File.dll, а VS использует только .Storage, и версии разные.
Это интересно! Это может быть возможной ошибкой, я настоятельно рекомендую открыть проблему в репозитории VS 2019 github: github.com/github/visualstudio/issues , это может получить некоторую поддержку от команды VS.
Привет, если я просматриваю .dll в dotPeek, я вижу, что для CopyStatus нет класса/папки. Да, я открою тему, как вы предлагаете. Спасибо
Решение заключалось в обновлении до .NET framework 4.7.2 и установке Microsoft.WindowsAzure.Storage.DataMovement вместо Microsoft.WindowsAzure.Storage в NuGet.
Затем уточняем операторы использования:
using AF=Microsoft.WindowsAzure.Storage.File;
using AB=Microsoft.WindowsAzure.Storage.Blob;
Здравствуйте, спасибо за ваш ответ. Я удалил WindowsAzure.Storage 9.3.3, а затем попытался добавить его обратно, но несколько раз истекло время ожидания при попытке установить через консоль. Поэтому я перезапустил все и добавил обратно через опцию «Управление NuGet для решения», которая установила библиотеку и добавила ссылку обратно. Однако файл .Strorage.File. не имеет класса CopyStatus. Я добавил скриншот в исходное сообщение выше, так как не вижу, как добавить изображение в комментарий.