Використовуючи функції Azure , чи можу я посилатись та використовувати пакети NuGet у своїй функції C #?
Використовуючи функції Azure , чи можу я посилатись та використовувати пакети NuGet у своїй функції C #?
Відповіді:
Так! Хоча портал функцій Azure в даний час не забезпечує механізм додавання і управління пакетами NuGet, час виконання підтримує посилання NuGet і переконається, що вони правильно використовуються при складанні та виконанні ваших функцій.
Для того, щоб визначити свої залежності, вам потрібно створити Project.json
файл із необхідними посиланнями NuGet. Ось приклад, який додає посилання на Microsoft.ProjectOxford.Face
версію 1.1.0:
{
"frameworks": {
"net46":{
"dependencies": {
"Microsoft.ProjectOxford.Face": "1.1.0"
}
}
}
}
Портал функцій Azure пропонує зручний спосіб управління файлами функцій, які ми можемо використовувати для створення (або завантаження) наших project.json
:
project.json
на вашій машині створений раніше створений файлproject.json
та визначте посилання вашого пакета (ви можете використовувати приклад вище як шаблон).Почнеться процес відновлення пакета, і ви побачите у своєму вікні журналу вихід, подібний до наступного:
2016-04-04T19:02:48.745 Restoring packages.
2016-04-04T19:02:48.745 Starting NuGet restore
2016-04-04T19:02:50.183 MSBuild auto-detection: using msbuild version '14.0' from 'D:\Program Files (x86)\MSBuild\14.0\bin'.
2016-04-04T19:02:50.261 Feeds used:
2016-04-04T19:02:50.261 C:\DWASFiles\Sites\facavalfunctest\LocalAppData\NuGet\Cache
2016-04-04T19:02:50.261 https://api.nuget.org/v3/index.json
2016-04-04T19:02:50.261
2016-04-04T19:02:50.511 Restoring packages for D:\home\site\wwwroot\HttpTriggerCSharp1\Project.json...
2016-04-04T19:02:52.800 Installing Newtonsoft.Json 6.0.8.
2016-04-04T19:02:52.800 Installing Microsoft.ProjectOxford.Face 1.1.0.
2016-04-04T19:02:57.095 All packages are compatible with .NETFramework,Version=v4.6.
2016-04-04T19:02:57.189
2016-04-04T19:02:57.189
2016-04-04T19:02:57.455 Packages restored.
Як і очікувалося, час виконання функцій Azure автоматично додаватиме посилання на складання пакетів, тому НЕ потрібно явно додавати посилання на збірки, використовуючи #r "AssemblyName"
, ви можете просто додати необхідні using
оператори до своєї функції та використовувати типи, визначені в пакеті NuGet, який ви ' Ви посилаєтесь.
Оскільки функції Azure побудовані на основі Служб додатків, як альтернатива вищезазначеним крокам, ви також маєте доступ до всіх чудових варіантів розгортання, доступних для стандартних веб-додатків Azure (веб-сайтів Azure).
Ось кілька прикладів:
Щоб керувати своїми файлами безпосередньо зі свого веб-переглядача, використовуйте Редактор служб додатків (Монако):
Function app settings
Go to App Service Settings
Tools
кнопкуOn
якщо воно ще не ввімкнено, і натисніть наGo
project.json
файл у папку вашої функції (папка, названа за вашою функцією.https://<function_app_name>.scm.azurewebsites.net
D:\home\site\wwwroot\<function_name>
Project.json
файл у папку (у сітку файлів)Після підключення (дотримуючись інструкцій вище) скопіюйте свій Project.json
файл у/site/wwwroot/<function_name>
Докладніші параметри розгортання див. На веб-сторінці : https://azure.microsoft.com/en-us/documentation/articles/web-sites-deploy/
Якщо ви ввімкнете постійну інтеграцію та розгортаєте свою функцію з project.json
файлом, коли додаток для функцій не працює, відновлення пакета відбудеться автоматично, як тільки ваша функціональна програма ініціюється. Рекомендується не додавати project.lock.json
файл до керування джерелом.
Функції також можуть бути розгорнуті як попередньо складені збірки, і в цьому випадку все управління залежностями обробляється у Visual Studio. Цей параметр може використовуватися як бібліотеки стандартного класу на будь-якій версії Visual Studio або за допомогою інструментів функцій Visual Studio 2017 Azure .
function script root
у вашому останньому абзаці? Я розумію, що там, де project.json
знаходиться. Це правильно?
project.json
знаходиться у вашій папці функцій, яка є дочірньою папкою кореня сценарію. Корінь сценарію відображається у вашій wwwroot
папці в Azure.
Цей потік мені дуже допоміг, але я все-таки витратив кілька годин, намагаючись примусити Project.json працювати - безрезультатно.
Якщо ви робите функцію Azure у версії 2.x, потрібно зробити це по-іншому.
Створіть новий файл, як зазначено, але дайте ім’я function.proj . Цей файл має структуру XML для імпорту бібліотек через Nuget.
Ось мій приклад імпорту Amazon S3 SDK для .Net;
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AWSSDK.S3" Version="3.3.26.3"/>
<PackageReference Include="AWSSDK.Core" Version="3.3.29.1"/>
</ItemGroup>
</Project>
після збереження цього ви повинні побачити оновлення консолі, в якому зазначено, що пакети встановлюються. Це дійсно не добре задокументовано, і мені знадобилося кілька годин, щоб дізнатися це. Тож сподіваюся, що це комусь допоможе.
Ви можете використовувати пакунки Nuget у своїх функціях Azure. Найпростішим способом буде використання Visual Studio 2017 15.4, де є шаблон для функцій Azure. Виконайте нижче кроки
1) Додати функцію Azure Проект: Клацніть правою кнопкою миші рішення та виберіть Додати новий проект. Перейдіть до опції CLOUD, там ви знайдете проект "Функція Azure".
2) Тепер досить додавати будь-який пакет Nuget. Розгорніть "ЗАЛІЗНИКИ" і клацніть правою кнопкою миші на ньому, щоб вибрати опцію "Керувати Nuget пакетами". З'явиться діалогове вікно Nuget Package, виберіть будь-який пакет Nuget, який ви хочете встановити. Дивіться скріншот нижче
3) Тепер опублікуйте свою функцію Azure, Visual Studio подбає про всі налаштування тощо.
Цей метод буде працювати лише в тому випадку, якщо ви використовуєте Visual Studio 2017 15.4 або вище, якщо ні, вам не доведеться дотримуватися інших способів, пояснених іншими.
Припустимо, ми хочемо використовувати SFTP
клієнт, який є зовнішньою бібліотекою, яка зберігається десь у NuGet
.
Для цього, згідно з останньою специфікацією функцій Azure , виконайте наступне:
Відкрийте розділ файлів всередині функції Azure та додайте новий файл під назвою function.proj
.
Для отримання додаткової інформації зверніться до документації Microsoft .
Всередині цього посилання на посилання function.proj
на Nuget
пакет використовується XML
структура (такий самий тип структури, який ви можете знайти всередині *.csproj
файлу, якщо ви створюєте локальний проект за допомогою Visual Studio і встановлюєте NuGet
в нього якийсь пакет).
Далі, включимо посилання на бібліотеку до проекту:
Тут важливо, що ви повинні надати повний шлях до бібліотеки, як у прикладі, який ви бачите: "D:\home\site\wwwroot\bin\your_custom_library.dll"
Нарешті, відкрийте розділ Журнали та збережіть код. Через деякий час ви побачите NuGet
журнал відновлення пакетів.
Примітка. Ці журнали також можуть з'являтися під час збереження function.proj
файлу або під час запуску проекту.
У випадку, якщо бібліотека все ще видається невідомою, спробуйте додати її Dll
вручну в папку bin, використовуючи Azure Cloud Explorer з Visual Studio .
function.proj
, dll
через деякий проміжок часу в розділі Журнали відображається місце для розділу. Іноді вам потрібно ще раз перезавантажити сторінку для функції Azure, іноді натисніть кнопку «Виконати», щоб побачити встановлення пакетів NuGet, а також місце розташування. Будь ласка, перевірте, що друкується у розділі Журнал як місцеположення, і спробуйте поставити це.
Зауважте, що новий формат .csproj у Visual studio 2017 також підтримується. Якщо ви створюєте проект як веб-проект ASPNET, час виконання функцій Azure завантажує всі необхідні пакети перед створенням проекту.