Czy korzystając z usługi Azure Functions , mogę odwoływać się do pakietów NuGet i używać ich w mojej funkcji C #?
Czy korzystając z usługi Azure Functions , mogę odwoływać się do pakietów NuGet i używać ich w mojej funkcji C #?
Odpowiedzi:
Tak! Chociaż portal Azure Functions nie udostępnia obecnie mechanizmu do dodawania pakietów NuGet i zarządzania nimi, środowisko uruchomieniowe obsługuje odwołania NuGet i upewnia się, że są one poprawnie używane podczas kompilowania i wykonywania funkcji.
Aby zdefiniować zależności, musisz utworzyć Project.json
plik z wymaganymi odwołaniami do pakietu NuGet. Oto przykład, który dodaje odniesienie do Microsoft.ProjectOxford.Face
wersji 1.1.0:
{
"frameworks": {
"net46":{
"dependencies": {
"Microsoft.ProjectOxford.Face": "1.1.0"
}
}
}
}
Portal Azure Functions zapewnia wygodny sposób zarządzania plikami funkcji, których możemy użyć do utworzenia (lub przesłania) naszych project.json
:
project.json
plik na swoim komputerzeproject.json
i zdefiniuj odniesienia do pakietu (możesz użyć powyższego przykładu jako szablonu).Rozpocznie się proces przywracania pakietu i w oknie dziennika powinny pojawić się wyniki podobne do następujących:
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.
Zgodnie z oczekiwaniami środowisko uruchomieniowe Azure Functions automatycznie doda odwołania do zestawów pakietów, więc NIE MUSISZ jawnie dodawać odwołań do zestawów przy użyciu #r "AssemblyName"
, wystarczy dodać wymagane using
instrukcje do funkcji i użyć typów zdefiniowanych w pakiecie NuGet. odniósł się.
Ponieważ usługa Azure Functions jest oparta na usługach aplikacji, jako alternatywa dla powyższych kroków, masz również dostęp do wszystkich wspaniałych opcji wdrażania dostępnych w standardowych usługach Azure Web Apps (Azure Websites).
Oto kilka przykładów:
Aby zarządzać plikami bezpośrednio z przeglądarki za pomocą App Service Editor (Monako):
Function app settings
Go to App Service Settings
Tools
przyciskOn
jeśli nie jest jeszcze włączony, i kliknijGo
project.json
plik do folderu funkcji (folder nazwany tak jak nazwa funkcji.https://<function_app_name>.scm.azurewebsites.net
D:\home\site\wwwroot\<function_name>
Project.json
plik do folderu (na siatkę plików)Po nawiązaniu połączenia (postępując zgodnie z powyższymi instrukcjami) skopiuj Project.json
plik do/site/wwwroot/<function_name>
Aby uzyskać dodatkowe opcje wdrażania, zobacz: https://azure.microsoft.com/en-us/documentation/articles/web-sites-deploy/
Jeśli włączysz ciągłą integrację i wdrożysz swoją funkcję z project.json
plikiem, gdy aplikacja funkcji nie jest uruchomiona, przywracanie pakietu nastąpi automatycznie po zainicjowaniu aplikacji funkcji. Zaleca się, aby nie dodawać project.lock.json
pliku do kontroli źródła.
Funkcje można również wdrażać jako wstępnie skompilowane zestawy, aw tym przypadku całe zarządzanie zależnościami jest obsługiwane w programie Visual Studio. Ta opcja może być używana jako standardowe biblioteki klas w dowolnej wersji programu Visual Studio lub przy użyciu narzędzi Azure Functions programu Visual Studio 2017 .
function script root
twój ostatni akapit? Rozumiem, że to miejsce, w którym project.json
się znajduje. Czy to jest poprawne?
project.json
Jest w folderze funkcji, która jest folder dziecko korzenia skryptu. Katalog główny skryptu jest mapowany na Twój wwwroot
folder na platformie Azure.
Ten wątek bardzo mi pomógł - ale i tak zmarnowałem kilka godzin próbując zmusić Project.json do działania - bezskutecznie.
Jeśli utworzysz funkcję Azure w wersji 2.x, musisz to zrobić w inny sposób.
Utwórz nowy plik zgodnie z opisem, ale nadaj mu nazwę function.proj . Ten plik ma strukturę XML do importowania bibliotek przez Nuget.
Oto mój przykład importu Amazon S3 SDK dla .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>
po zapisaniu powinieneś zobaczyć aktualizację konsoli informującą, że pakiety są instalowane. To naprawdę nie jest dobrze udokumentowane i zajęło mi dobre kilka godzin, zanim się tego dowiedziałem. Mam więc nadzieję, że to komuś pomoże.
W usłudze Azure Functions można używać pakietów NuGet. Najłatwiejszym sposobem będzie użycie programu Visual Studio 2017 15.4, w którym znajduje się szablon usługi Azure Functions. Wykonaj poniższe kroki
1) Dodaj projekt funkcji platformy Azure: kliknij rozwiązanie prawym przyciskiem myszy i wybierz opcję Dodaj nowy projekt. Przejdź do opcji CLOUD, gdzie znajdziesz projekt „Azure Function”.
2) Teraz ładnie jest dodać dowolny pakiet Nuget. Rozwiń „ZALEŻNOŚCI” i kliknij prawym przyciskiem myszy, aby wybrać opcję „Zarządzaj pakietami Nuget”. Pojawi się okno dialogowe pakietu Nuget, wybierz dowolny pakiet Nuget, który chcesz zainstalować. Zobacz zrzut ekranu poniżej
3) Teraz opublikuj swoją funkcję Azure, Visual Studio zajmie się wszystkimi ustawieniami itd.
Ta metoda będzie działać tylko wtedy, gdy używasz programu Visual Studio 2017 w wersji 15.4 lub nowszej, jeśli nie, będziesz musiał postępować zgodnie z innymi sposobami wyjaśnionymi przez innych.
Załóżmy, że chcemy użyć SFTP
klienta, który jest zewnętrzną biblioteką, przechowywaną gdzieś w NuGet
.
Aby to osiągnąć, zgodnie z najnowszą specyfikacją usługi Azure Functions wykonaj następujące czynności:
Otwórz sekcję plików wewnątrz funkcji platformy Azure i dodaj nowy plik o nazwie function.proj
.
Więcej informacji można znaleźć w dokumentacji firmy Microsoft .
Wewnątrz function.proj
umieszczamy Nuget
odwołanie do pakietu przy użyciu XML
struktury (ten sam rodzaj struktury, który można znaleźć w *.csproj
pliku, jeśli tworzysz projekt lokalny w programie Visual Studio i instalujesz w nim jakiś NuGet
pakiet).
Następnie dołączmy odniesienie biblioteki do projektu:
Istotne jest, aby podać pełną ścieżkę do biblioteki, tak jak w przykładzie, który widzisz: "D:\home\site\wwwroot\bin\your_custom_library.dll"
Na koniec otwórz sekcję Dzienniki i zapisz kod. Po pewnym czasie powinieneś zobaczyć NuGet
dziennik przywracania pakietów.
Uwaga: te dzienniki mogą również pojawić się podczas zapisywania function.proj
pliku lub podczas uruchamiania projektu.
W przypadku, gdy biblioteka nadal pojawia się jako nieznana, spróbuj dodać ją Dll
ręcznie do folderu bin przy użyciu eksploratora chmury Azure w programie Visual Studio .
function.proj
lokalizacja pliku dll
jest wyświetlana w sekcji Dzienniki po pewnym czasie. Czasami trzeba ponownie załadować stronę dla funkcji platformy Azure, a czasami nacisnąć przycisk „Uruchom”, aby zobaczyć instalację pakietów NuGet, a także lokalizację. Sprawdź, co jest drukowane w sekcji Dziennik jako lokalizacja i spróbuj to umieścić.
Należy pamiętać, że obsługiwany jest również nowy format .csproj w programie Visual Studio 2017. Jeśli utworzysz projekt jako projekt sieci Web ASPNET, środowisko uruchomieniowe Azure Functions pobierze wszystkie niezbędne pakiety NuGet przed utworzeniem projektu.