F# Azure Worker Роль и целевая среда выполнения

Я использую последнюю версию Azure SDK 2.7, и когда я создаю новую облачную службу и добавляю рабочую роль F#, я не могу изменить целевую среду выполнения. Его установили на F# 3.1 / FSharp.Core 4.3.1

Есть ли хитрость, как я могу использовать F# 4.0 для рабочих ролей?

РЕШЕНИЕ:

Чтобы заставить ваш F# WorkerRole работать с другими библиотеками F#, которые были скомпилированы для другой версии F#, сделайте следующее:

  • удалите зависимость FSharp.Core из вашего проекта рабочей роли (для Target Runtime будет установлено значение N/A)

  • добавить перенаправление сборки

    assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="нейтральный" bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0"

2 ответа

Решение

Я часто обнаруживаю, что взаимодействие F# с архитектурными компонентами имеет тенденцию отставать. Чтобы решить эту проблему, я всегда заключаю свои компоненты F# в C#.

Я смотрю на C# как на свой архитектурный клей, в то время как F# выполняет настоящую работу:

  1. Создайте облачную службу и добавьте рабочую роль C#
  2. Создать библиотеку F#
  3. Добавьте ссылку на рабочую роль C# для библиотеки F#.

Просмотр решения

Использование библиотеки из C#

Определение библиотеки F#

Измените цель, заменив ссылку на DLL в вашем проекте с 4.3.1 на 4.4.0.

Вы заметите, что целевое поле со списком в ссылках проекта просто читает то, на что установлена ​​эта версия DLL. Я попробовал это, и эмулятор вычислений запустил все отлично.

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

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