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# выполняет настоящую работу:
- Создайте облачную службу и добавьте рабочую роль C#
- Создать библиотеку F#
- Добавьте ссылку на рабочую роль C# для библиотеки F#.
Просмотр решения
Использование библиотеки из C#
Определение библиотеки F#
Измените цель, заменив ссылку на DLL в вашем проекте с 4.3.1 на 4.4.0.
Вы заметите, что целевое поле со списком в ссылках проекта просто читает то, на что установлена эта версия DLL. Я попробовал это, и эмулятор вычислений запустил все отлично.
Возможно, вам потребуется установить последнюю версию среды выполнения.NET в облачную службу в соответствии с данным руководством.