2010-04-22 13 views
35

मैं सेवा के लिए प्रॉक्सी कक्षाएं उत्पन्न करने के लिए svcutil.exe का उपयोग करने का प्रयास कर रहा था, लेकिन जब मैं .NET 4.0 के लिए बनाई गई असेंबली को संदर्भित करने के लिए /reference विकल्प का उपयोग करता हूं तो मुझे एक त्रुटि मिलती है।.NET 4.0 के लिए Svcutil.exe?

Could not load file or assembly [...] or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.

तो ऐसा लगता है कि मैं svcutil.exe का पुराना संस्करण उपयोग कर रहा हूं। मैं "C:\Program Files\Microsoft SDKs\Windows\v7.0A में से एक का उपयोग कर रहा हूं जो कि मुझे मिल सकता है। क्या बाद में कोई संस्करण है जिसका उपयोग मुझे करना है?

उत्तर

59

मुझे एक ही समस्या थी। अपनी परियोजना .NET 4.0 फ़्रेमवर्क उपयोग करने के लिए सेट कर दिया जाता है, तो आप SvcUtil.exe का सही संस्करण का चयन करना होगा, या यह एक त्रुटि फेंक होगा: "लोड नहीं कर सका ..."

  • यदि आप में देखने के लिए " माइक्रोसॉफ्ट एसडीके \ विंडोज \ v6.0A \ बिन ", आप देखेंगे कि उस exe का संस्करण" 3.0.4506.2152 "है।
  • "माइक्रोसॉफ्ट एसडीके \ विंडोज \ v7.0A \ Bin" में SvcUtil.exe का संस्करण बिल्कुल वही है, इसलिए यह मुझे एक लूप के लिए भी फेंक दिया।

हालांकि, है SvcUtil.exe का एक और संस्करण "माइक्रोसॉफ्ट SDKs \ Windows \ v7.0A \ बिन \ NETFX 4.0 उपकरण" में स्थित है जो संस्करण "4.0.30319.1" है, और अगर आप इसका इस्तेमाल, सब कुछ काम करना चाहिए।

+0

माइक्रोसॉफ्ट एसडीके \ विंडोज \ v7.0A \ बिन \ NETFX 4.0 उपकरण सही जवाब है। धन्यवाद! – Mark

+0

धन्यवाद, मैं भी, मैं बहुत आभारी हूं ... आदि <3 (अवैध टिप्पणी, मुझे पता है, अन्य सभी बस इसे वोट देते हैं) –

0

.NET 4.0 के लिए इस लिंक के अनुसार आपको C: \ Program Files \ Microsoft SDKs \ Windows \ v6.0 \ Bin में एक का उपयोग करना चाहिए।

http://msdn.microsoft.com/en-us/library/aa347733.aspx

हालांकि एक छोटे से अजीब लगता है, अगर v7.0A dir में एक बहुत पुराना है।

+0

के v8.0 द्वारा उत्पन्न किए गए नए Async समर्थन का लाभ उठाएं और देखें। मैंने चेक किया है और वे दोनों एक ही संस्करण हैं, 3.0.4506.2152, इसलिए मुझे एक ही त्रुटि मिल रही है । –

+0

इसके बजाए इसे आजमाएं: http://stackoverflow.com/questions/896629/how-to-run-clr-2- appplication-as-clr-4- अनुप्रयोग –

0

कक्षाएं उत्पन्न करने के लिए .NET 3.5 के रूप में पुनर्निर्माण क्यों नहीं? मुझे संदेह है कि आप किस प्रकार के वर्ग बना रहे हैं, किसी भी .NET 4.0 कार्यक्षमता पर भरोसा न करें। सीएस फाइलों पर ध्यान नहीं दिया जाएगा कि डीएलएल किस संस्करण के लिए बनाया गया था ताकि आप उन्हें 4.0 प्रोजेक्ट में ठीक से इस्तेमाल कर सकें।

+0

मैं एक बिल्ड इवेंट के रूप में svcutil को चलाने के लिए चाहता हूं तो इसका मतलब है हमेशा मेरी संदर्भित असेंबली .NET 3.5 के रूप में संकलित है। यह अभी के लिए काम करता है क्योंकि अभी तक कोई 4.0 कार्यक्षमता नहीं है, लेकिन मैं इसे बाद में जोड़ना चाहता हूं। मुझे अभी भी मेरी समस्या का वास्तविक कारण खोजने में दिलचस्पी है। क्या svcutil का कोई संस्करण उपलब्ध नहीं है जो .NET 4 का समर्थन करता है? क्या वहाँ होगा? –

+0

मैं इसे स्वीकार किए गए उत्तर के रूप में चिह्नित करूंगा क्योंकि यह अब स्वीकार्य कार्य है। हालांकि अभी भी अधिक उत्तरों में रुचि रखते हैं। –

0

मुझे एक ही समस्या है।

माइक्रोसॉफ्ट का कहना है कि आप केवल नए एसवीसीयूटी के साथ नेट 4 डीएलएल का उपयोग कर सकते हैं जो नेट (http://msdn.microsoft.com/en-us/library/aa347733.aspx) का नवीनतम संस्करण बुद्धिमान आता है लेकिन यह संस्करण ऊपर उल्लेखित एक ऐसा प्रतीत होता है। यह संदर्भ के रूप में .Net 4 DLL तक नहीं पहुंच पाएगा।

7

नेट 4.0 के लिए SDK के नवीनतम संस्करण

http://msdn.microsoft.com/en-us/windows/bb980924.aspx

svcutil.exe जो v7.1 में रहता है पर उपलब्ध है/bin संस्करण 3.0.4506.2152 है।

svcutil.exe जो v7.1/bin/NETFX 4.0 उपकरण में रहता है संस्करण 4.0.30319.1 है।

+0

मैंने 7.1 स्थापित किया, और बीआईएन फ़ोल्डर में svcutil.exe नहीं है .. –

+0

यह पता चला है कि एसडीके के डिफ़ॉल्ट इंस्टॉल ने .NET उपकरण विकल्प का चयन नहीं किया था। चयनित के साथ, svcutil.exe फ़ाइलें स्थापित हैं। –

0

अद्यतन: util के नवीनतम संस्करण के अनुसार v7.0 नहीं है:

Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools

SvcUtil.exe v8।0A Visual Studio 2012 स्थापित करने के बाद अब उपलब्ध है (वी.एस. 2012)

"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\SvcUtil.exe"

क्या आप वास्तव में चाहते हैं एक सेवा ग्राहक में एक WSDL फ़ाइल बदलने के लिए पूरी परिभाषा:

/n:*,MyCompany.Services.Client /out:IServiceInterface.cs ServiceDefinition.wsdl.xml

कहाँ सेवा definition.wsdl स्पष्ट रूप से किसी भी पुराने साबुन endpoint से wsdl प्रतिक्रिया है।

मिनियन और ट्रोल याद रखें! सबकुछ अब Async है, इसलिए SVCUtil.exe