Czy korzystając z usługi Azure Functions , mogę odwoływać się do pakietów NuGet i używać ich w mojej funkcji C #?
c#
azure
azure-functions
nuget-package
azure-web-app-service
Fabio Cavalcante
źródło
źródło
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 doMicrosoft.ProjectOxford.Face
wersji 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:
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ć wymaganeusing
instrukcje do funkcji i użyć typów zdefiniowanych w pakiecie NuGet. odniósł się.Dodatkowe opcje wdrażania
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:
Korzystanie z App Service Editor (Monako)
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.Korzystanie z punktu końcowego SCM (Kudu)
https://<function_app_name>.scm.azurewebsites.net
D:\home\site\wwwroot\<function_name>
Project.json
plik do folderu (na siatkę plików)FTP
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/
Ciągła integracja
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.Wstępnie skompilowane zestawy
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 .
źródło
function script root
twój ostatni akapit? Rozumiem, że to miejsce, w którymproject.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ójwwwroot
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;
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.
źródło
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.
źródło
Załóżmy, że chcemy użyć
SFTP
klienta, który jest zewnętrzną biblioteką, przechowywaną gdzieś wNuGet
.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
umieszczamyNuget
odwołanie do pakietu przy użyciuXML
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 .źródło
function.proj
lokalizacja plikudll
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.
źródło