2013-07-17 8 views
5

मैं एक NuGet पैकेज बना रहा हूं, जहां मैं दो वेब सेवाओं का उपयोग करना चाहता हूं।NuGet पैकेज: webservices के संदर्भ कैसे जोड़ें?

मैंने सेवाओं के लिए फ़ाइलों को मैन्युअल रूप से जोड़कर और कॉन्फ़िगरेशन फ़ाइल को संशोधित करके शुरू किया। लेकिन जब मैं फाइलों के माध्यम से जा रहा था और संदर्भों को सही कर रहा था, तो मुझे समझ में आया कि यह दृष्टिकोण उत्पादक नहीं है, खासकर, अगर बाद में मुझे वेब सर्विसेज और संदर्भों को अपडेट करने की आवश्यकता होगी। मैं समाधान के लिए googled, लेकिन मुश्किल से कुछ भी उपयोगी पाया।

इस प्रकार, मेरा सवाल यह है कि, NuGet संकुल में webservices के संदर्भ जोड़ने के लिए एक सही दृष्टिकोण क्या है?

धन्यवाद।

+0

क्या मैं गलतफहमी कर रहा हूं, या आप अपनी सेवा पर राइट क्लिक करने और "सेवा संदर्भ अपडेट" करने में सक्षम नहीं होना चाहिए? प्रोजेक्ट से –

+1

- हां। लेकिन मेरा विचार था कि अगर मैं एक पैकेज को अद्यतन करने का फैसला करता हूं, तो मैं वहां वेब सर्विसेज को जल्दी से जोड़/हटा/अपडेट कर सकता हूं। तो, जो व्यक्ति मेरे पैकेज का उपयोग करता है उसे यह जानकर परेशान नहीं होना चाहिए कि कुछ वेबसाइसेस को अद्यतन करने की आवश्यकता है। हालांकि, हाँ, मुझे यकीन नहीं है कि यह काम करने के लिए है, मैं NuGet संकुल बनाने के लिए काफी नया हूँ। – Anelook

उत्तर

2

मैंने जिस दृष्टिकोण का चयन किया वह वेब सेवा के लिए प्रॉक्सी क्लास उत्पन्न करने के लिए svcutil का उपयोग करना था। फिर मैं webservice तक पहुंचने के लिए या आगे जाने और डीएलएल बनाने के लिए इस प्रॉक्सी क्लास का उपयोग करने में सक्षम था और लक्षित परियोजना में इस डीएल का संदर्भ देता था।

$className = "SomeClass"; 
$svcUri = "http://.../SomeWebService.svc?wsdl"; 
$csFile = $className + '.cs'; 
$dllName = [System.IO.Path]::Combine($temp, $className + ".dll") 
$svcUtilresult = & svcutil.exe /noConfig /out:$csFile $svcUri 
csc.exe /t:library /out:$dllName $csFile 
+0

मैंने वेब एपीआई के साथ एक समान दृष्टिकोण लिया है जो मुझे अपने काम में काम करना है। मेरे पास कई पुस्तकालय हैं जिन्हें वेब सेवा में "रैपर" के रूप में बनाया गया है ताकि मैं इसे एक प्रोजेक्ट में प्रबंधित कर सकूं और इसे अन्य लोगों में लाने के लिए NuGet का उपयोग कर सकूं। – Logarr

1

आप wsdl.exe का उपयोग कर सकते हैं:

मामले में यह किसी के लिए उपयोगी हो सकता है, यहाँ कौन-सा प्रॉक्सी वर्ग और dll एक वेब सेवा यूआरएल के आधार पर बनाता है powershell कोड है। यदि आपके पास विजुअल स्टूडियो स्थापित है तो आपको इसे अपने सटीक संस्करण के आधार पर यहां सी: \ प्रोग्राम फ़ाइलें (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin या एक समान पथ ढूंढने में सक्षम होना चाहिए।

माइक्रोसॉफ्ट दस्तावेज बहुत सरल https://msdn.microsoft.com/en-us/library/7h3ystb6%28VS.80%29.aspx है।

मुझे पता चला है कि यह एएसएमएक्स वेब सेवाओं के लिए बेहतर काम करता है, क्योंकि जो स्थिर वर्ग उत्पन्न हुआ है, वह विज़ुअल स्टूडियो के भीतर ऐड वेब सेवा/अपडेट वेब सेवा कार्यक्षमता का उपयोग करके उत्पन्न कक्षाओं के लिए एक सटीक मिलान है। आपको बस अपनी परियोजना में टूल द्वारा जेनरेट की गई .cs फ़ाइलों को जोड़ना है और अपने वेब संदर्भों को हटा देना है। आपको नए नामस्थान के लिए अपने using संदर्भों को अपडेट करने की आवश्यकता हो सकती है, लेकिन यह सब कुछ है।

svcutil.exe द्वारा उत्पन्न स्थिर वर्ग WCF सेवाओं के लिए बेहतर फिट हैं, यह टूल उसी निर्देशिका में स्थित है, यदि आपको इसे कमांड लाइन से ढूंढना है।

संबंधित मुद्दे