Функции Azure с SendGrid, не компилируемые в Visual Studio - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь получить простой пример функций Azure, использующих SendGrid в Visual Studio для запуска:

[FunctionName("SendEmail")]
public static void SendEmail([HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] [SendGrid()] out Mail message)
    {
        message = new Mail
        {
            Subject = "From VS"
        };

        var personalization = new Personalization();
        // change to email of recipient
        personalization.AddTo(new Email("joe@foo.com"));

        Content content = new Content
        {
            Type = "text/plain",
            Value = "testing from VS."
        };

        message.AddContent(content);
        message.AddPersonalization(personalization);
}

Но я получаю следующую ошибку компиляции:

System.IO.FileNotFoundException: не удалось загрузить файл или сборку 'Microsoft.Azure.WebJobs, версия = 2.2.0.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35' или одна из ее зависимостей.Системе не удается найти указанный файл.

Наряду с этими предупреждениями: enter image description here

У меня установлена ​​Visual Studio 2017 15.7.1.Проект ориентирован на .NET Standard 2.0, и в моем проекте установлены следующие пакеты NuGet:

enter image description here

Что я могу установить или удалить, чтобы разрешить его компиляцию?

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Как сказал Эвандро Паула, вы можете Install-Package Microsoft.Azure.WebJobs.Extensions.SendGrid -Version 3.0.0-beta5 сделать его совместимым со стандартом .net.

Тогда ваш сценарий представляет собой сочетание функций v1 и v2.Например, CreateResponse() не принадлежит HttpRequest, а класс Mail не находится в сборке SendGrid.

Вот очень упрощенный пример отправки почты с помощью функции HTTP:

public static IActionResult Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequest req, [SendGrid(ApiKey ="sendgridkey")] out SendGridMessage message, TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");

            message = new SendGridMessage();
            message.AddTo("testto@gmail.com");
            message.AddContent("text/html", "Test body");
            message.SetFrom(new EmailAddress("testsend@gmail.com"));
            message.SetSubject("Subject");

            return new OkObjectResult("OK");
        }

Установите sendgridkey в вашем файле local.setting.json:

{
    "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "storageconnectionstring",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true",
    "sendgridkey": "yoursendgridkey"
  }
}
0 голосов
/ 21 мая 2018

Ниже приведены предупреждения о сборке при обращении к пакету Microsoft.Azure.WebJobs.Extensions.SendGrid версии 2.2.0 , поскольку он не совместим со стандартом .NET.Предупреждения исчезли после обновления пакета до версии 3.0.0-бета5.Кроме того, обратите внимание, что это подразумевает использование бета-версии продукта, тщательно протестируйте его перед выпуском любого производственного кода.

 1. 'Microsoft.Azure.WebJobs.Extensions.SendGrid 2.2.0' was restored   
    using '.NETFramework,Version=v4.6.1' instead of the project target  
    framework '.NETStandard,Version=v2.0'. This package may not be fully
    compatible with your project.
 2. 'Sendgrid 8.0.5' was restored using '.NETFramework,Version=v4.6.1'
    instead of the project target framework '.NETStandard,Version=v2.0'.
    This package may not be fully compatible with your project.
 3. 'SendGrid.CSharp.HTTP.Client 3.0.0' was restored using
    '.NETFramework,Version=v4.6.1' instead of the project target
    framework '.NETStandard,Version=v2.0'. This package may not be fully
    compatible with your project.
...