Menggunakan Azure Functions , dapatkah saya mereferensikan dan menggunakan paket NuGet dalam fungsi C # saya?
c#
azure
azure-functions
nuget-package
azure-web-app-service
Fabio Cavalcante
sumber
sumber
Jawaban:
Iya! Meskipun portal Azure Functions saat ini tidak menyediakan mekanisme untuk menambah dan mengelola paket NuGet, runtime mendukung referensi NuGet dan akan memastikannya digunakan dengan benar saat menyusun dan menjalankan fungsi Anda.
Untuk menentukan dependensi Anda, Anda perlu membuat
Project.json
file dengan referensi paket NuGet yang diperlukan. Berikut adalah contoh yang menambahkan referensi keMicrosoft.ProjectOxford.Face
versi 1.1.0:Portal Azure Functions menyediakan cara mudah untuk mengelola file fungsi Anda, yang dapat kami gunakan untuk membuat (atau mengunggah)
project.json
:project.json
file yang dibuat sebelumnya di mesin Andaproject.json
dan tentukan referensi paket Anda (Anda dapat menggunakan contoh di atas sebagai template).Proses pemulihan paket akan dimulai dan Anda akan melihat keluaran yang mirip dengan berikut ini di jendela log Anda:
Seperti yang diharapkan, runtime Azure Functions akan secara otomatis menambahkan referensi ke rakitan paket, jadi Anda TIDAK perlu menambahkan referensi assembly secara eksplisit
#r "AssemblyName"
, Anda cukup menambahkanusing
pernyataan yang diperlukan ke fungsi Anda dan menggunakan tipe yang ditentukan dalam paket NuGet Anda ' telah direferensikan.Opsi penerapan tambahan
Karena Azure Functions dibangun di atas Layanan Aplikasi, sebagai alternatif dari langkah-langkah di atas, Anda juga memiliki akses ke semua opsi penerapan hebat yang tersedia untuk Aplikasi Web Azure standar (Situs Web Azure).
Berikut beberapa contohnya:
Menggunakan App Service Editor (Monaco)
Untuk mengelola file Anda langsung dari browser Anda dengan menggunakan App Service Editor (Monaco):
Function app settings
Go to App Service Settings
Tools
tombol tersebutOn
jika belum diaktifkan dan klikGo
project.json
file Anda ke folder fungsi Anda (folder yang dinamai sesuai fungsi Anda.Menggunakan titik akhir SCM (Kudu)
https://<function_app_name>.scm.azurewebsites.net
D:\home\site\wwwroot\<function_name>
Project.json
file Anda ke dalam folder (ke file grid)FTP
Setelah terhubung (mengikuti petunjuk di atas) salin
Project.json
file Anda ke/site/wwwroot/<function_name>
Untuk opsi penerapan tambahan, lihat: https://azure.microsoft.com/en-us/documentation/articles/web-sites-deploy/
Integrasi Berkelanjutan
Jika Anda mengaktifkan integrasi berkelanjutan dan menerapkan fungsi Anda dengan
project.json
file saat Aplikasi Fungsi tidak berjalan, pemulihan paket akan terjadi secara otomatis setelah Aplikasi Fungsi Anda diinisialisasi. Anda disarankan untuk tidak menambahkanproject.lock.json
file Anda ke kontrol sumber.Majelis yang telah dikompilasi sebelumnya
Fungsi juga dapat digunakan sebagai rakitan pra-kompilasi, dan dalam kasus ini, semua manajemen ketergantungan ditangani di Visual Studio. Opsi ini dapat digunakan sebagai pustaka kelas standar pada setiap versi Visual Studio atau dengan menggunakan alat fungsi Azure Visual Studio 2017 .
sumber
function script root
paragraf terakhir Anda? Saya mengerti di manaproject.json
lokasinya. Apakah itu benar?project.json
di folder fungsi Anda, yang merupakan folder anak dari root skrip. Root skrip memetakan kewwwroot
folder Anda di Azure.Utas ini sangat membantu saya - tetapi saya masih menyia-nyiakan beberapa jam mencoba membuat Project.json berfungsi - tidak berhasil.
Jika Anda membuat fungsi Azure di versi 2.x, Anda perlu melakukannya dengan cara yang berbeda.
Buat file baru seperti yang dinyatakan tetapi beri nama function.proj . File ini memiliki struktur XML untuk mengimpor perpustakaan melalui Nuget.
Berikut adalah contoh saya mengimpor Amazon S3 SDK untuk .Net;
setelah menyimpan ini, Anda akan melihat pembaruan konsol yang menyatakan bahwa paket sedang diinstal. Ini benar-benar tidak terdokumentasi dengan baik dan saya butuh beberapa jam untuk mengetahuinya. Jadi saya harap ini membantu seseorang.
sumber
Anda dapat menggunakan paket Nuget di Azure Functions Anda. Cara termudah adalah menggunakan Visual Studio 2017 15.4 di mana terdapat templat untuk Azure Functions. Ikuti langkah-langkah di bawah ini
1) Tambahkan Proyek fungsi Azure: Klik kanan pada solusi dan pilih Tambahkan proyek baru. Pergi ke opsi CLOUD di sana Anda akan menemukan proyek "Fungsi Azure".
2) Sekarang cukup menambahkan paket Nuget apa pun. Perluas "DEPENDENCIES" dan klik kanan di atasnya untuk memilih opsi "Kelola Paket Nuget". Dialog Paket Nuget akan muncul, pilih paket Nuget mana saja yang ingin Anda instal. Lihat gambar di bawah
3) Sekarang publikasikan fungsi Azure Anda, Visual Studio akan mengurus semua pengaturan, dll.
Metode ini hanya akan berfungsi jika Anda menggunakan Visual Studio 2017 15.4 atau lebih tinggi, jika tidak Anda harus mengikuti cara lain seperti yang dijelaskan oleh orang lain.
sumber
Mari kita asumsikan kita ingin menggunakan
SFTP
klien, yang merupakan pustaka eksternal, disimpan di suatu tempat diNuGet
.Untuk melakukannya, sesuai dengan spesifikasi Azure Functions terbaru , lakukan hal berikut:
Buka bagian file di dalam Fungsi Azure Anda dan tambahkan file baru bernama
function.proj
.Untuk informasi lebih lanjut, lihat dokumentasi Microsoft .
Di dalamnya
function.proj
letakkanNuget
referensi paket menggunakanXML
struktur (jenis struktur yang sama dapat Anda temukan di dalam*.csproj
file jika Anda membuat proyek lokal dengan Visual Studio dan menginstal beberapaNuGet
paket ke dalamnya).Selanjutnya, mari sertakan referensi perpustakaan ke proyek:
Yang penting di sini adalah Anda harus memberikan jalur lengkap ke perpustakaan, seperti dalam contoh yang Anda lihat:
"D:\home\site\wwwroot\bin\your_custom_library.dll"
Terakhir, buka bagian Log dan simpan kodenya. Setelah beberapa waktu, Anda akan melihat
NuGet
paket memulihkan log.Catatan: log ini juga dapat muncul saat menyimpan
function.proj
file atau saat menjalankan proyek.Dalam kasus jika perpustakaan masih muncul sebagai tidak diketahui coba tambahkan
Dll
secara manual ke folder bin menggunakan penjelajah Azure Cloud dari Visual Studio .sumber
function.proj
, lokasi untukdll
muncul di bagian Log setelah beberapa waktu. Terkadang Anda perlu memuat ulang halaman untuk Fungsi Azure sekali lagi, terkadang tekan tombol "Run" untuk melihat instalasi paket NuGet dan juga lokasinya. Silakan periksa apa yang sedang dicetak di bagian Log sebagai lokasi dan coba letakkan itu.Perhatikan bahwa format .csproj baru di Visual studio 2017 juga didukung. Jika Anda membuat proyek Anda sebagai Proyek Web ASPNET, runtime Fungsi Azure mengunduh semua paket nuget yang diperlukan sebelum membangun proyek Anda.
sumber