Где находятся классы BlobInput и BlobOutput Azure WebJob?

#c# #azure-webjobs

#c# #azure-webjobs

Вопрос:

Я создаю консольное приложение Azure WebJob, которое изменяет размеры изображений, загруженных в хранилище больших двоичных объектов. При следовании любому из примеров кода онлайн я не могу ссылаться и использовать атрибуты входных параметров BlobInput и BlobOutput. Я использую пакет NuGet от Microsoft.Azure.Задания 0.3.0-бета-версия (и Microsoft.Azure.Jobs.Core).

В каких пространствах имен находятся BlogInput и BlobOutput? Есть ли другой пакет NuGet, который мне нужен?

Вот мой код, который не компилируется, потому что он не может разрешить BlobInput и BlobOutput:

 using Microsoft.Azure.Jobs;
using System.IO;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            JobHost host = new JobHost();
            host.RunAndBlock();
        }

        public static void SquishNewlyUploadedPNGs([BlobInput("input/{name}")] Stream input, [BlobOutput("output/{name}")] Stream output)
        {
            //...
        }
    }
}
  

Комментарии:

1. Это атрибуты, поэтому имена типов должны быть BlobInputAttribute , BlobOutputAttribute . Должно быть в Microsoft. WindowsAzure.Jobs . dll в Microsoft. WindowsAzure. Пространство имен заданий. Или, по крайней мере, они были там когда-то. Попробуйте открыть все библиотеки DLL Jobs sdk, скажем, в JustDecompile и выполнить их поиск.

2. Когда я декомпилирую Microsoft. Azure.Jobs . dll эти атрибуты нигде не найдены. Это сборка из последней версии пакета NuGet 0.3.0-beta. Если я использую более старый пакет, скажем 0.2.0-alpha, сборка называется Microsoft. WindowsAzure.Jobs . dll и они там, как и ожидалось. Таким образом, обновление с 0.2.0 до 0.3.0 не только меняет название сборки с Microsoft. WindowsAzure. Задания для Microsoft. Azure. Рабочие места, но также теряется BlogInputAttribute и BlobOutputAttribute. Я полагаю, одним из вариантов было бы использовать 0.2.2, но я бы предпочел научиться использовать WebJobs, используя текущую версию

3. Интересно, что я вижу, что Microsoft. Azure.Jobs . dll содержит BlobAttribute и BlobTriggerAttribute. Последний описывается в сборке как «Представляет атрибут, который связывает параметр с большим двоичным объектом Azure, вызывая запуск метода при загрузке большого двоичного объекта». Я предполагаю, что это потомок BlobInputAttribute, возможно, MS все еще играет с именами.

4. Может быть. У меня нет SDK, поэтому я не могу сказать наверняка :/

5. Имена атрибутов изменены, см. Мой ответ ниже

Ответ №1:

В бета-версии Azure WebJobs SDK мы изменили имена атрибутов, как описано ниже. Функциональность осталась прежней.

 BlobInputAttribute   -> BlobTriggerAttribute
BlobOutputAttribute  -> BlobAttribute
QueueInputAttribute  -> QueueTriggerAttribute
QueueOutputAttribute -> QueueAttribute
  

Кроме того, изменились имена пакетов. Вы должны использовать:

 http://www.nuget.org/packages/Microsoft.Azure.Jobs/0.3.0-beta
http://www.nuget.org/packages/Microsoft.Azure.Jobs.Core/0.3.0-beta
  

Комментарии:

1. Спасибо, Виктор, обновленные имена работают для меня точно так, как ожидалось, спасибо за быстрый ответ.