मैं अपने Azure फ़ंक्शंस में NuGet पैकेज का उपयोग कैसे कर सकता हूं?


112

एज़्योर फ़ंक्शंस का उपयोग करते हुए , क्या मैं अपने सी # फ़ंक्शन में न्यूगेट पैकेज का संदर्भ और उपयोग कर सकता हूं?


मुझे फंक्शन सर्विस को फिर से शुरू करने के लिए अपने प्रोजेक्ट.जसन फ़ाइल को मैन्युअल रूप से अपडेट करना पड़ा .. तो इसने मेरे नगेट पैकेज को बहाल कर दिया। किसी को भी पैकेज को पुनर्स्थापित करने के लिए सेवा को पुनरारंभ करने का एक बेहतर तरीका पता है? कुडू ने मदद नहीं की
एरिक बर्गस्टेड

1
आप फ़ंक्शन ऐप सेटिंग में मानक साइट पुनर्स्थापना विकल्प का उपयोग कर सकते हैं। लेकिन ध्यान रखें कि, जब किसी फ़ंक्शन को पहली बार निष्पादित किया जाता है, यदि प्रोजेक्ट.जॉन फ़ाइल में उन संदर्भों का एक सेट होता है जो पहले बहाल किए गए से भिन्न होते हैं, तो उस समय एक पुनर्स्थापना ऑपरेशन स्वचालित रूप से होगा।
फाबियो कैवलैंटे

जवाबों:


141

हाँ! हालाँकि 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:

  1. फ़ंक्शन के डेवलपमेंट सेक्शन में, व्यू फाइल्स पर क्लिक करें
  2. फ़ाइल बनाने के विकल्प पर क्लिक करें (यदि आप project.jsonअपनी मशीन पर पहले से बनाई गई फ़ाइल है तो फ़ाइल अपलोड करने के विकल्प पर भी क्लिक कर सकते हैं
  3. फ़ाइल को नाम दें 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अपने फ़ंक्शन में आवश्यक बयान जोड़ सकते हैं और आपके द्वारा निर्धारित किए गए प्रकारों का उपयोग कर सकते हैं ' रेफर किया गया।

अतिरिक्त तैनाती के विकल्प

चूंकि एज़्योर फ़ंक्शंस ऐप सेवाओं के शीर्ष पर बनाया गया है, इसलिए ऊपर दिए गए चरणों के विकल्प के रूप में, आपके पास मानक एज़्योर वेब ऐप (एज़्योर वेबसाइट्स) के लिए सभी महान तैनाती विकल्पों तक पहुंच भी है।

यहाँ कुछ उदाहरण हैं:

ऐप सेवा संपादक (मोनाको) का उपयोग करना

ऐप सेवा संपादक (मोनाको) का उपयोग करके अपने ब्राउज़र से सीधे अपनी फ़ाइलों का प्रबंधन करने के लिए:

  • Azure Functions पोर्टल पर क्लिक करें Function app settings
  • उन्नत सेटिंग्स अनुभाग के तहत , पर क्लिक करेंGo to App Service Settings
  • Toolsबटन पर क्लिक करें
  • डेवलप के तहत , ऐप सर्विस एडिटर पर क्लिक करें
  • Onयदि यह पहले से सक्षम नहीं है तो इसे चालू करें और क्लिक करेंGo
  • एक बार जब यह लोड हो जाता है, तो अपनी project.jsonफ़ाइल को अपने फ़ंक्शन के फ़ोल्डर (आपके फ़ंक्शन के नाम वाले फ़ोल्डर) में खींचें ।

SCM (कुडू) समापन बिंदु का उपयोग करना

  • पर जाए: 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 एज़्योर फ़ंक्शंस टूल्स का उपयोग करके मानक वर्ग पुस्तकालयों के रूप में उपयोग किया जा सकता है ।


1
function script rootआपके अंतिम पैराग्राफ में क्या है ? मैं समझता हूं कि यह कहां project.jsonस्थित है। क्या वो सही है?
justinyoo

2
@JustInChronicles, यह वास्तव में उस से एक फ़ोल्डर है। project.jsonअपने कार्य फ़ोल्डर, जो स्क्रिप्ट जड़ का एक बच्चा फ़ोल्डर है में है। स्क्रिप्ट रूट आपके wwwrootब्राउज़र में Azure में मैप करता है ।
फैबियो कैवलैंटेते

स्पष्टीकरण के लिए धन्यवाद!
justinyoo

@FabioCavalcante, उदाहरण के लिए आपके द्वारा लगाए गए नगेट पैकेज से प्यार करें, इसलिए बहुत सी अद्भुत चीजें wth azure संज्ञानात्मक सेवाएं हैं !!!
थॉमस

कृपया ध्यान दें कि 'दृश्य स्टूडियो ऑनलाइन' ऊपर stackoverflow जवाब में बताया गया stackoverflow.com/a/36411537/5288052 'ऐप्स की सेवा संपादक' के रूप में Azure उपकरण से उपलब्ध है (देखें stackoverflow.com/a/38173438/5288052 )
Stefano Spinucci

35

इस धागे ने मुझे बहुत मदद की - लेकिन फिर भी मैंने कुछ घंटों का समय बर्बाद किया।

यदि आप संस्करण 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>

इसे सहेजने पर आपको कंसोल अपडेट को यह देखना चाहिए कि पैकेज स्थापित हो रहे हैं। यह वास्तव में अच्छी तरह से प्रलेखित नहीं है और मुझे यह पता लगाने में कुछ घंटे लगे। इसलिए मुझे उम्मीद है कि इससे किसी को मदद मिलेगी।


2
यह एक बड़ी मदद थी, पोस्ट करने के लिए धन्यवाद। यहाँ अधिक जानकारी के साथ एक लिंक है।

1
आपकी तरह, मैंने भी ऐसा करने के लिए घंटों बिताए। यह काम करता है। बहुत बहुत धन्यवाद। प्रेम का ढेर!
कुर्तोजाल

13

आप अपने एज़्योर फ़ंक्शंस में Nuget पैकेज का उपयोग कर सकते हैं। सबसे आसान तरीका दृश्य स्टूडियो 2017 15.4 का उपयोग करना होगा जहां एज़्योर फ़ंक्शंस के लिए एक टेम्पलेट है। नीचे दिए गए चरणों का पालन करें

1) Add Azure function Project: समाधान पर राइट क्लिक करें और Add New Project का चयन करें। वहां CLOUD के विकल्प पर जाएं, आपको "Azure Function" प्रोजेक्ट मिलेगा।

Azure फ़ंक्शन

2) अब यह किसी भी Nuget पैकेज को जोड़ने के लिए सुंदर है। "DEPENDENCIES" का विस्तार करें और "Nuget Package प्रबंधित करें" विकल्प चुनने के लिए उस पर राइट क्लिक करें। Nuget Package डायलॉग दिखाई देगा, आप जो भी Nuget पैकेज इंस्टॉल करना चाहते हैं उसे चुनें। नीचे स्क्रीनशॉट देखें

3) अब अपने एज़्योर फ़ंक्शन को प्रकाशित करें, विज़ुअल स्टूडियो सभी सेटिंग्स का ख्याल रखेगा, आदि।

यह विधि केवल तभी काम करेगी जब आप Visual Studio 2017 15.4 या इसके बाद के संस्करण का उपयोग करेंगे, यदि नहीं तो आपको दूसरों द्वारा बताए गए अन्य तरीकों का पालन करना होगा।


1
यह वीएस / क्लास लाइब्रेरीज़ के लिए मानक प्रवाह है (जो कि एज़्योर फ़ंक्शंस प्रोजेक्ट है) और एज़्योर फ़ंक्शंस के लिए विशिष्ट नहीं है। केवल एज़्योर फ़ंक्शंस के लिए विशिष्ट चरण नीचे दिए गए दस्तावेज़ हैं। मैं अपने मूल उत्तर में एक नोट जोड़ूंगा, जिसमें 2.0 में अद्यतन प्रक्रिया के विवरण शामिल हैं।
फैबियो कैवलैंटे

7

चलो मान लेते हैं कि हम SFTPग्राहक का उपयोग करना चाहते हैं , जो कि एक बाहरी पुस्तकालय है, जिसमें कहीं संग्रहित हैNuGet

इसे पूरा करने के लिए, नवीनतम Azure Functions विनिर्देश के अनुसार , निम्नलिखित कार्य करें:

  1. अपने Azure फ़ंक्शन के अंदर फ़ाइलें अनुभाग खोलें और नामक एक नई फ़ाइल जोड़ें function.proj

    यहां छवि विवरण दर्ज करें अधिक जानकारी के लिए Microsoft दस्तावेज़ीकरण देखें ।


  1. अंदर जो संरचना का उपयोग करके पैकेज संदर्भ function.projडालते हैं (उसी तरह की संरचना आप फ़ाइल के अंदर पा सकते हैं यदि आप विजुअल स्टूडियो के साथ एक स्थानीय प्रोजेक्ट बनाते हैं और उसमें कुछ पैकेज स्थापित करते हैं)।NugetXML*.csprojNuGet

    यहां छवि विवरण दर्ज करें


  1. अगला, चलो परियोजना के लिए पुस्तकालय संदर्भ शामिल करें: यहां छवि विवरण दर्ज करें

    यहां जो आवश्यक है वह यह है कि आपको पुस्तकालय को एक पूर्ण मार्ग प्रदान करना चाहिए, जैसे उदाहरण में आप देख सकते हैं कि यह है: "D:\home\site\wwwroot\bin\your_custom_library.dll"


  1. अगला कुछ पुस्तकालय-विशिष्ट कोड का परीक्षण करें: यहां छवि विवरण दर्ज करें

  1. अंत में, लॉग्स सेक्शन को खोलें और कोड को सेव करें। कुछ समय बाद आपको NuGetलॉग को पुनर्स्थापित करने वाले पैकेजों को देखना चाहिए । यहां छवि विवरण दर्ज करें

    नोट: ये लॉग function.projफ़ाइल सहेजते समय या प्रोजेक्ट चलाते समय भी दिखाई दे सकते हैं ।


यदि पुस्तकालय अभी भी अज्ञात के रूप में प्रकट होता है, तो यह दृश्य स्टूडियो से एज़्योर क्लाउड एक्सप्लोररDll का उपयोग करके मैन्युअल रूप से बिन फ़ोल्डर में जोड़ने का प्रयास करता है ।

यहां छवि विवरण दर्ज करें


इस जवाब के बाद से कुछ बदल गया है? यह अब काम नहीं करता है। मुझे एक "संकलन सेवा त्रुटि" दिखाई दे रही है - निष्पादित 'फ़ंक्शंस। TimerTrigger2' (विफल, Id = a318d5b7-a02c-4ba0-bb04-037beda892cc) फ़ाइल 'D: \ home \ site \ wwwroot \ bin \ Google' नहीं ढूँढ सका। .Sheets.v4.dll '।
उपयोगकर्ता

जब आप स्क्रिप्ट के माध्यम से एक स्क्रिप्ट स्थापित कर रहे हैं function.proj, तो dllकुछ समय के बाद लॉग्स अनुभाग में स्थान दिखाई दे रहा है। कभी-कभी आपको Azure फ़ंक्शन के लिए पृष्ठ को एक बार फिर से लोड करने की आवश्यकता होती है, कभी-कभी NuGet संकुल की स्थापना और स्थान को देखने के लिए "रन" बटन दबाएं। कृपया लॉग अनुभाग में स्थान के रूप में क्या प्रिंट कर रहा है और इसे लगाने की कोशिश करें।
आर्सेन खाचरथियन

2

ध्यान दें कि Visual Studio 2017 में नया .csproj प्रारूप भी समर्थित है। यदि आप अपना प्रोजेक्ट ASPNET वेब प्रोजेक्ट के रूप में बनाते हैं, तो Azure Functions रनटाइम आपके प्रोजेक्ट के निर्माण से पहले आवश्यक सभी नौगट पैकेज डाउनलोड करता है।


ASP.NET वेब प्रोजेक्ट के लिए, VS 2015 भी काम करता है। एज़्योर फ़ंक्शंस टूल्स के लिए, वह वीएस 2017 ही है। महत्वपूर्ण अंतर यह है कि आप पूर्व संकलित बिट्स (और निर्भरता) को तैनात कर रहे हैं, इसलिए रनटाइम आपके लिए पुनर्स्थापना नहीं संभाल रहा है, लेकिन हां, यह वास्तव में फ़ंक्शन लिखने और निर्भरता प्रबंधित करने का एक नया तरीका है। मैं नवीनतम विशेषताओं को दर्शाने के लिए उत्तर को अपडेट करूंगा।
फैबियो कैवलकांटे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.