2012-10-07 21 views
25

मेरे पास एक विभाजन पर विंडोज 8 का एक साफ इंस्टॉल है, विजुअल स्टूडियो 11/2012 पेशेवर स्थापित है और मुझे C:\Windows\Microsoft.NET\Framework\v4.0.30319 के अंदर नहीं मिल रहा है।regtlibv12 के साथ क्या हुआ?

नीचे, मेरी विंडोज 7 विभाजन का एक स्क्रीनशॉट है नेट 4.0 (और regtlibv12) के साथ:

Windows 7 - .Net 4

नीचे नेट 4.5 के साथ विंडोज 8 (और कोई regtlibv12) है:

Windows 8 - .Net 4.5

regtlibv12 अब नेट फ्रेमवर्क का हिस्सा नहीं है? क्या मुझे .NET 4.0 भी स्थापित करने की आवश्यकता है? अगर मैं 4.5 के शीर्ष पर .NET 4.0 स्थापित करता तो क्या होगा? मुझे पता है कि वे दोनों हार्ड ड्राइव पर एक ही स्थान पर जाते हैं, और 4.5 प्रभावी रूप से 4.0 को ओवरराइट करते हैं, और 4.5 विंडोज 8 पर डिफॉल्ट के रूप में आता है। क्या मुझे 4.0 स्थापित करने की आवश्यकता होगी, और फिर regtlibv12 वापस पाने के लिए 4.5 को फिर से इंस्टॉल करना होगा?

धन्यवाद

उत्तर

33

यह कभी भी ढांचे का हिस्सा नहीं था। और यह पूरी तरह से अनियंत्रित है। हालांकि एक बहुत ही लगातार अफवाह है कि यह है कि, बहुत सारे प्रोग्रामर इसे अपने v2.0.50727 या v4.0.30319 निर्देशिकाओं में पाते हैं और यह पता लगाया है कि यह पंजीकरण समस्याओं को हल कर सकता है। फोरम पोस्ट के बहुत सारे इसका उल्लेख करते हैं।

उन फ़ोल्डर्स में दिखाया जाने वाला सटीक तरीका रिवर्स-इंजीनियर के लिए मुश्किल है, मैंने देखा है कि एकमात्र पैटर्न यह है कि जब आप स्वयं ढांचे को स्थापित करते हैं तो यह वहां होगा। और जब फ्रेमवर्क मशीन पर पूर्व-स्थापित होता है तब वहां नहीं होगा। जो कुछ हद तक समझ में आता है, फ्रेमवर्क निर्देशिका में कई .tlb फ़ाइलें हैं जिन्हें पंजीकृत करने की आवश्यकता है। उनमें .NET [ComVisible] प्रकारों के लिए प्रकार की जानकारी होती है जो क्लाइंट कोड पर निर्भरता हो सकती है। सामान्य तरीके प्रकार पुस्तकालय पंजीकृत हो जाते हैं उन .tlb फ़ाइलों के लिए लागू नहीं होते हैं क्योंकि वे एक नियमित COM सर्वर में एम्बेडेड नहीं होते हैं। अतिरिक्त अनुमान के साथ कि .NET के पूर्व-स्थापित संस्करण में टूल की आवश्यकता नहीं है क्योंकि पंजीकरण जानकारी नियमित विंडोज सेटअप में लुढ़क जाती है।

यदि आप टूल पर निर्भरता प्राप्त कर चुके हैं तो आप किसी अन्य मशीन से .exe को कॉपी करने से परे बहुत कुछ नहीं कर सकते हैं। या कारण है कि आप दूसरे छोर से उपयोग करने की आवश्यकता से निपटने ताकि आप इसे और आवश्यकता नहीं है:

  • यह Regasm.exe साथ/tlb विकल्प का उपयोग करने भूल के लिए एक समाधान नहीं है। यह रनटाइम पर TYPE_E_CANTLOADLIBRARY त्रुटि उत्पन्न कर सकता है जब क्लाइंट कोड किसी अन्य थ्रेड से COM इंटरफ़ेस का उपयोग करने का प्रयास करता है। टाइप लाइब्रेरी प्रकार की जानकारी प्रदान करती है कि मानक मार्शलर को विधि के तर्कों को मार्शल करने की आवश्यकता होती है। इसे ठीक करने के लिए/tlb विकल्प का प्रयोग करें।

  • यह प्रोजेक्ट + संदर्भ संदर्भ, COM टैब में COM सर्वर दिखाने के लिए एक कामकाज है। उस टैब में पंजीकृत प्रकार पुस्तकालय सूचीबद्ध हैं। हालांकि, बिल्ड सर्वर के अलावा, यह उचित समाधान नहीं है, आप अपना कोड संकलित कर सकते हैं लेकिन पंजीकरण पूरा होने के बाद से आप इसे नहीं चला सकते हैं। ऐसा करने का उचित तरीका लेखक के प्रदत्त इंस्टॉलर का उपयोग करके या एक चुटकी में Regsvr32.exe का उपयोग करके है, इसलिए टाइप लाइब्रेरी और सीएलएसआईडी कुंजी दोनों पंजीकृत हो जाते हैं।

  • यह COM सर्वर के लिए एक समाधान है जो अपनी प्रकार की लाइब्रेरी पंजीकृत नहीं करता है। उपर्युक्त के समान, लेकिन प्रकार पुस्तकालयों को पंजीकृत करना वैकल्पिक है और आम तौर पर केवल आपके देव मशीन पर आवश्यक है, सर्वर पर नहीं चलने वाली मशीन पर। प्रकार पुस्तकालयों का उपभोग करने वाले अधिकांश उपकरण टाइपलिब रजिस्ट्री कुंजी पर निर्भर होने के बजाय उन्हें स्पष्ट रूप से जोड़ने का एक तरीका रखते हैं।तो विजुअल स्टूडियो आईडीई करता है, आप सीधे .tlb फ़ाइल का चयन करने के लिए ब्राउज़ टैब का उपयोग कर सकते हैं।

+0

बहुत दिलचस्प है, अगर मैं यह पता लगाने की कि यह कैसे मेरी मशीन पर मिल गया मूल रूप से मैं एक टिप्पणी छोड़ जाएगा, हालांकि मैं विंडोज 7 विभाजन पर ढांचा अपने आप को स्थापित नहीं किया है, यह सिर्फ ऐसा दृश्य स्टूडियो के साथ स्थापित किया है, जब भी मैंने विंडोज 8 – JMK

+1

पर विजुअल स्टूडियो स्थापित किया, तो कोई बड़ा अंतर नहीं है। .NET 4.5 विंडोज 8 पर पूर्व-स्थापित आता है। –

+0

बेशक क्षमा करें, और 3.5 विंडोज 7 पर पूर्व-स्थापित हो जाता है, जब आप विजुअल स्टूडियो 2010 स्थापित करते हैं तो आप 4 स्थापित करते हैं। – JMK

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