Не удалось загрузить файл или сборку System.Fabric с функциями Azure. - PullRequest
0 голосов
/ 13 ноября 2018

Существуют ли какие-либо ограничения для пакетов, которые можно использовать с функциями Azure. Я исследовал столько, сколько смогу, и это не так, однако, когда я пытаюсь создать функцию Azure, которая ссылается на пакет «Microsoft.ServiceFabric», я получаю следующую ошибку:

System.Private.CoreLib: исключение при выполнении функции: ScaleDownServiceFabrics. FunctionApp2: не удалось загрузить файл или сборку 'System.Fabric, версия = 6.0.0.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35. Не удалось найти или загрузить конкретный файл. (Исключение из HRESULT: 0x80131621). System.Private.CoreLib: Не удалось загрузить файл или сборку 'System.Fabric, Version = 6.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 '.

Я попробовал и Azure Func и.1 и 2, и .Net Framework и .Net Core, но безуспешно.

using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
using System.Fabric;

namespace FunctionApp5
{
  public static class Function1
  {
    [FunctionName("Function1")]
    public static void Run([TimerTrigger("*/5 * * * * *")]TimerInfo myTimer, ILogger log)
    {
      log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
      FabricClient client = new FabricClient();
    }
  }
}

Возможно ли это, или ограничение функций Azure в Visual Studio - если да, какие пакеты приемлемы?

Ответы [ 3 ]

0 голосов
/ 14 ноября 2018
  • Пакеты ServiceFabric x64 битные, если ваша целевая функция 32 битная, она не будет работать.Попробуйте решение, предложенное Джерри Лиу
  • Пакеты Service Fabric должны быть добавлены в виде пакетов вместо ссылки на dll непосредственно в проекте из-за зависимостей от других библиотек.Вы должны добавить пакет NuGet Microsoft.ServiceFabric.
  • Microsoft.ServiceFabric последняя версия 6.3.x, цели .Net Standard 2.0 и .Net Framework с 4.5 до 4.7.1, убедитесь, что вы используете любой из них наваш проект.
  • Убедитесь, что библиотеки DLL Microsoft.ServiceFabric копируются в папку bin при сборке \ развертывании.
  • При использовании FabricClient вне кластера необходимо указать параметры и учетные данные.иначе вы не сможете подключиться к кластеру.См. этот пример и этот документы.
  • FabricClient использует Service Fabric API для взаимодействия с кластером, если возникают проблемы с пакетами,другой вариант - использовать HttpClient и делать запросы к API, избегая конфликтов пакетов
0 голосов
/ 27 февраля 2019

Я столкнулся с точно такой же проблемой, как @ tank140, прокомментированный в оригинальном сообщении:

Unable to load DLL 'FabricClient.dll' or one of its dependencies: The specified module could not be found. (Exception from HRESULT: 0x8007007E)

Подробнее в еще один вопрос , который я задал по этому вопросу.В ответ было подтверждено, что SF Client API для .NET требует, чтобы среда SF была установлена ​​на платформе, что не поддерживается в функциях Azure.

0 голосов
/ 14 ноября 2018

Диего и Сурадж указали причину, конфликт между 64 и 32 битами.

Два исправляемых момента

  1. Установите платформу сборки на x64, как вы сделали.
  2. Получить x64 Function runtime.Функции работают во время выполнения функции (содержится в основных инструментальных средствах Azure Function), но бит по умолчанию - x86, загружаемый VS.

Чтобы получить бит x64 простым способом, давайте использовать Nodejs для установки базовых инструментов функций Azure из NPM.

После установки введите cmd npm i -g azure-functions-core-tools --unsafe-perm true, чтобы получить инструменты ядра функций.

Затем установите свойства отладки проекта (щелкните правой кнопкой мыши свой проект> Свойства> Отладочный блейд).

  1. Установить тип запуска на Executable

  2. Установить путь к исполняемому файлу %appdata%\npm\node_modules\azure-functions-core-tools\bin\func.exe.

  3. Добавить аргументы приложения start.

...