Выполнение предварительно скомпилированного кода .NET как функции Azure

Как загрузить предварительно скомпилированные сборки .NET и выполнить свой код как функции Azure?

Я ищу способ запустить сложную логику домена, которая содержится внутри пользовательских сборок и покрывается модульными тестами и т. Д.

Какие есть ограничения для этого кода? Например. доступ к удаленным хранилищам данных, сетям и т. д.


person Mikhail Shilkov    schedule 05.04.2016    source источник


Ответы (3)


Обновление: ответ ниже по-прежнему верен (все еще работает), однако теперь также имеется первоклассная поддержка предварительно скомпилированных функций. Дополнительную информацию см. На wiki-странице.

В документации (ссылка здесь) описано, как вы можете ссылаться на внешние библиотеки и пакеты Nuget из функции C #, используя синтаксис #r, например:

#r "System.Web.Http"

using System.Net;
using System.Net.Http;
using System.Threading.Tasks;

public static Task<HttpResponseMessage> Run(HttpRequestMessage req)

Дополнительные сведения об этом можно увидеть в этом сообщении SO < / а>.

Вы также можете развернуть настраиваемые исполняемые файлы и вызывать их из Функций Azure. Например, если вы начинаете с шаблона Windows BAT, вы можете использовать его для вызова исполняемого файла. Вот образец этого в нашем репо, показан пример изменения размера изображения. В этом примере у нас есть сценарий BAT, который запускается всякий раз, когда новое изображение загружается в контейнер больших двоичных объектов, и сценарий обращается к инструменту Resizer.exe для изменения размера:

.\Resizer\Resizer.exe %original% %resized% 200

Что касается ограничений, весь код Функций Azure выполняется в изолированной программной среде службы приложений, ограничения которой описаны здесь.

person mathewc    schedule 05.04.2016

Чтобы запустить предварительно скомпилированную сборку .NET в функции Azure, можно загрузить настраиваемую dll по FTP в корневую папку функции (в папке bin), а затем использовать #r для ссылки на нее из кода функции Azure.

Вот пример, dll с именем "WorkOnImages.dll" загружается в лазурную папку функций в лазурном режиме:

импортировать DLL в лазурную функцию

Затем на эту dll ссылается функция azure:

включить dll

Вот исходное сообщение в блоге

person Thibaut Ranise    schedule 12.05.2016
comment
С февраля 2017 года вы также можете совместно использовать папку bin между функциями приложения-функции. Поместите его на тот же уровень ваших функций (т.е. прямо под wwwroot) и укажите в #r .. \ bin \ mylibrary.dll - person Néstor Sánchez A.; 13.02.2017

Обескураженный отсутствием поддержки инструментов функций Azure для VS2017, несовместимость с Azure SDK 3.0, я собирался бросить полотенце для Функций и отступить к подходу, использующему VS2017 и SDK WebJobs.

Затем было объявлено 16 марта 2017 г., самый простой подход задокументирован здесь в отличное сообщение в блоге Донны Малаери из Microsoft.

Он делает все, что я хотел - настоящий intellisense, возможности отладки. Это было здорово, и я бы не стал оглядываться назад.

person flyte    schedule 24.03.2017