Запуск консольного приложения dotnetcore в гостевом исполняемом файле Service Fabric

Я пытаюсь запустить консольное приложение dotnetcore в контейнере ServiceFabric GuestExecutable. Пока я добавлял этот сервис GuestExecutable в мое SF-приложение, я настроил его следующим образом

  1. Папка пакета кода -> ..repos\NewDllGuestSF\CoreConsole\bin\Debug\netcoreapp2.0

  2. Программа -> CoreConsole.dll

  3. Рабочая папка -> CodePackage

Здесь я знаю, что пытаюсь разместить этот файл.dll в качестве исполняемого файла для службы GuestExecutable. Это то, что я пытаюсь сделать, но не смог как-то. Когда я попробовал то же самое с помощью традиционного приложения.NetFramework и исполняемого файла.exe, я смог успешно запустить его на кластере SF. Но мне нужно сделать это с приложением dotnetcore и, конечно, с исполняемым файлом DLL.

До сих пор я пытался - я могу сгенерировать dll, а также exe при сборке консольного приложения dotnetcore и использовать сгенерированный файл.exe в GuestExecutable. Но здесь я должен сконфигурировать свое консольное приложение так, чтобы оно предназначалось для нескольких Frameworks как "netcoreapp2.0;net461", чего я не могу сделать по некоторым причинам.

Когда я запускаю свое консольное приложение dotnetcore с исполняемым файлом dll в кластере SF, я сталкиваюсь со следующей ошибкой введите описание изображения здесь

Здесь, если мы видим, служба GuestExecutable остается в исправном состоянии, а приложение - нет.

Может кто-нибудь, пожалуйста, помогите мне в этом, все, что я хочу сделать, это разместить файл.dll в качестве точки входа в сервисе GuestExecutable SF.

1 ответ

Насколько я понимаю нужно настроить CodePackage в ServiceManifest.xml запустить свой .dll используя внешний исполняемый файл.

Вот пример того, как это можно сделать (обратите внимание на атрибут IsExternalExecutable="true"):

  <CodePackage Name="Code" Version="1.0.0">
    <EntryPoint>
      <ExeHost IsExternalExecutable="true">
        <!-- We are using dotnet cli to launch our Service.dll -->
        <Program>dotnet</Program>
        <Arguments>Service.dll</Arguments>
        <WorkingFolder>CodePackage</WorkingFolder>
      </ExeHost>
    </EntryPoint>
  </CodePackage>

Надеюсь, поможет.

Другие вопросы по тегам