एज़्योर फ़ंक्शंस का उपयोग करते हुए , क्या मैं अपने सी # फ़ंक्शन में न्यूगेट पैकेज का संदर्भ और उपयोग कर सकता हूं?
एज़्योर फ़ंक्शंस का उपयोग करते हुए , क्या मैं अपने सी # फ़ंक्शन में न्यूगेट पैकेज का संदर्भ और उपयोग कर सकता हूं?
जवाबों:
हाँ! हालाँकि Azure Functions portal वर्तमान में NuGet पैकेजों को जोड़ने और प्रबंधित करने के लिए एक तंत्र प्रदान नहीं करता है, रनटाइम NuGet संदर्भों का समर्थन करता है और यह सुनिश्चित करेगा कि वे आपके कार्यों को संकलित और निष्पादित करते समय सही ढंग से उपयोग किए जाते हैं।
अपनी निर्भरता को परिभाषित करने के लिए, आपको Project.json
आवश्यक NuGet पैकेज संदर्भों के साथ एक फ़ाइल बनाने की आवश्यकता है। यहाँ एक उदाहरण है जो Microsoft.ProjectOxford.Face
संस्करण 1.1.0 के संदर्भ को जोड़ता है :
{
"frameworks": {
"net46":{
"dependencies": {
"Microsoft.ProjectOxford.Face": "1.1.0"
}
}
}
}
Azure Functions portal आपकी फ़ंक्शन फ़ाइलों को प्रबंधित करने के लिए एक सुविधाजनक तरीका प्रदान करता है, जिसका उपयोग हम अपने (या अपलोड) बनाने के लिए कर सकते हैं 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.
जैसा कि अपेक्षित था, एज़्योर फ़ंक्शंस रनटाइम स्वचालित रूप से पैकेज असेंबलियों के संदर्भों को जोड़ देगा, इसलिए आपको विधानसभा के संदर्भों का स्पष्ट रूप से उपयोग करने की आवश्यकता नहीं है #r "AssemblyName"
, आप बस using
अपने फ़ंक्शन में आवश्यक बयान जोड़ सकते हैं और आपके द्वारा निर्धारित किए गए प्रकारों का उपयोग कर सकते हैं ' रेफर किया गया।
चूंकि एज़्योर फ़ंक्शंस ऐप सेवाओं के शीर्ष पर बनाया गया है, इसलिए ऊपर दिए गए चरणों के विकल्प के रूप में, आपके पास मानक एज़्योर वेब ऐप (एज़्योर वेबसाइट्स) के लिए सभी महान तैनाती विकल्पों तक पहुंच भी है।
यहाँ कुछ उदाहरण हैं:
ऐप सेवा संपादक (मोनाको) का उपयोग करके अपने ब्राउज़र से सीधे अपनी फ़ाइलों का प्रबंधन करने के लिए:
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
।
फ़ंक्शंस को पूर्व-संकलित असेंबलियों के रूप में भी तैनात किया जा सकता है, और इस मामले में, सभी निर्भरता प्रबंधन को विजुअल स्टूडियो में संभाला जाता है। यह विकल्प विजुअल स्टूडियो के किसी भी संस्करण पर या विजुअल स्टूडियो 2017 एज़्योर फ़ंक्शंस टूल्स का उपयोग करके मानक वर्ग पुस्तकालयों के रूप में उपयोग किया जा सकता है ।
function script root
आपके अंतिम पैराग्राफ में क्या है ? मैं समझता हूं कि यह कहां project.json
स्थित है। क्या वो सही है?
project.json
अपने कार्य फ़ोल्डर, जो स्क्रिप्ट जड़ का एक बच्चा फ़ोल्डर है में है। स्क्रिप्ट रूट आपके wwwroot
ब्राउज़र में Azure में मैप करता है ।
इस धागे ने मुझे बहुत मदद की - लेकिन फिर भी मैंने कुछ घंटों का समय बर्बाद किया।
यदि आप संस्करण 2.x में एक Azure फ़ंक्शन करते हैं, तो आपको इसे अलग तरीके से करने की आवश्यकता है।
बताई गई एक नई फ़ाइल बनाएँ, लेकिन इसे function.proj नाम दें । इस फ़ाइल में Nuget के माध्यम से पुस्तकालयों को आयात करने के लिए एक XML संरचना है।
यहाँ .Net के लिए Amazon S3 SDK आयात करने का मेरा उदाहरण है;
<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 पैकेज का उपयोग कर सकते हैं। सबसे आसान तरीका दृश्य स्टूडियो 2017 15.4 का उपयोग करना होगा जहां एज़्योर फ़ंक्शंस के लिए एक टेम्पलेट है। नीचे दिए गए चरणों का पालन करें
1) Add Azure function Project: समाधान पर राइट क्लिक करें और Add New Project का चयन करें। वहां CLOUD के विकल्प पर जाएं, आपको "Azure Function" प्रोजेक्ट मिलेगा।
2) अब यह किसी भी Nuget पैकेज को जोड़ने के लिए सुंदर है। "DEPENDENCIES" का विस्तार करें और "Nuget Package प्रबंधित करें" विकल्प चुनने के लिए उस पर राइट क्लिक करें। Nuget Package डायलॉग दिखाई देगा, आप जो भी Nuget पैकेज इंस्टॉल करना चाहते हैं उसे चुनें। नीचे स्क्रीनशॉट देखें
3) अब अपने एज़्योर फ़ंक्शन को प्रकाशित करें, विज़ुअल स्टूडियो सभी सेटिंग्स का ख्याल रखेगा, आदि।
यह विधि केवल तभी काम करेगी जब आप Visual Studio 2017 15.4 या इसके बाद के संस्करण का उपयोग करेंगे, यदि नहीं तो आपको दूसरों द्वारा बताए गए अन्य तरीकों का पालन करना होगा।
चलो मान लेते हैं कि हम SFTP
ग्राहक का उपयोग करना चाहते हैं , जो कि एक बाहरी पुस्तकालय है, जिसमें कहीं संग्रहित हैNuGet
।
इसे पूरा करने के लिए, नवीनतम Azure Functions विनिर्देश के अनुसार , निम्नलिखित कार्य करें:
अपने Azure फ़ंक्शन के अंदर फ़ाइलें अनुभाग खोलें और नामक एक नई फ़ाइल जोड़ें function.proj
।
अधिक जानकारी के लिए Microsoft दस्तावेज़ीकरण देखें ।
अंदर जो संरचना का उपयोग करके पैकेज संदर्भ function.proj
डालते हैं (उसी तरह की संरचना आप फ़ाइल के अंदर पा सकते हैं यदि आप विजुअल स्टूडियो के साथ एक स्थानीय प्रोजेक्ट बनाते हैं और उसमें कुछ पैकेज स्थापित करते हैं)।Nuget
XML
*.csproj
NuGet
अगला, चलो परियोजना के लिए पुस्तकालय संदर्भ शामिल करें:
यहां जो आवश्यक है वह यह है कि आपको पुस्तकालय को एक पूर्ण मार्ग प्रदान करना चाहिए, जैसे उदाहरण में आप देख सकते हैं कि यह है: "D:\home\site\wwwroot\bin\your_custom_library.dll"
अंत में, लॉग्स सेक्शन को खोलें और कोड को सेव करें। कुछ समय बाद आपको NuGet
लॉग को पुनर्स्थापित करने वाले पैकेजों को देखना चाहिए ।
नोट: ये लॉग function.proj
फ़ाइल सहेजते समय या प्रोजेक्ट चलाते समय भी दिखाई दे सकते हैं ।
यदि पुस्तकालय अभी भी अज्ञात के रूप में प्रकट होता है, तो यह दृश्य स्टूडियो से एज़्योर क्लाउड एक्सप्लोररDll
का उपयोग करके मैन्युअल रूप से बिन फ़ोल्डर में जोड़ने का प्रयास करता है ।
function.proj
, तो dll
कुछ समय के बाद लॉग्स अनुभाग में स्थान दिखाई दे रहा है। कभी-कभी आपको Azure फ़ंक्शन के लिए पृष्ठ को एक बार फिर से लोड करने की आवश्यकता होती है, कभी-कभी NuGet संकुल की स्थापना और स्थान को देखने के लिए "रन" बटन दबाएं। कृपया लॉग अनुभाग में स्थान के रूप में क्या प्रिंट कर रहा है और इसे लगाने की कोशिश करें।
ध्यान दें कि Visual Studio 2017 में नया .csproj प्रारूप भी समर्थित है। यदि आप अपना प्रोजेक्ट ASPNET वेब प्रोजेक्ट के रूप में बनाते हैं, तो Azure Functions रनटाइम आपके प्रोजेक्ट के निर्माण से पहले आवश्यक सभी नौगट पैकेज डाउनलोड करता है।