दिलचस्प पोस्ट
स्थानीय रेपो कैसे जोड़ें और इसे एक दूरस्थ रेपो के रूप में कैसे इस्तेमाल करें App.config में कस्टम कॉन्फ़िग अनुभाग कैसे बनाएं? ट्विटर बूटस्ट्रैप: केंद्र गोलियां क्या सी ++ 11 में स्थानीय स्थैतिक चर प्रारंभिक धागा सुरक्षित है? SetMaximumSize () और setPrefferedSize () काम नहीं करते समय मैं JComponent पर कड़ी मेहनत कैसे निर्धारित करूं? कैसे एक स्विच के अंदर से एक पाश से बाहर तोड़ने के लिए? C # में जोड़ी-समानांतर चलन या खिड़की गणनाकर्ता स्लाइडिंग Django में मॉडल के खेतों को प्राप्त करें एएसपी.नेट एमवीसी – सभी रूट और डिफॉल्ट रूट को पकड़ो C ++ स्ट्रिंग के पूर्णांक को परिवर्तित करने के लिए वैकल्पिक (आईओएओ) के लिए? जावास्क्रिप्ट: लंबी लम्बी संख्या की बिट की ओर से बदलाव पृष्ठभूमि राज्य में प्रवेश करते समय UIAlertViews को खारिज करना इकाई फ़्रेमवर्क से एक रिकॉर्ड को हटाएं? मुझे एक नई शाखा को स्पष्ट रूप से पुश करने की आवश्यकता क्यों है? अलग 'डीबग' और 'रिलीज' बनाता है?

.NET 4.0 में एक नया GAC है, क्यों?

%windir%\Microsoft.NET\assembly\ नया जीएसी है I क्या इसका मतलब यह है कि हमें दो जीएसी का प्रबंधन करना है, एक .नेट 2.0-3.5 अनुप्रयोगों के लिए और अन्य .NET 4.0 अनुप्रयोगों के लिए?

सवाल है, क्यों?

Solutions Collecting From Web of ".NET 4.0 में एक नया GAC है, क्यों?"

हां, क्योंकि 2 भिन्न ग्लोबल असेंबली कैश (जीएसी) हैं, आपको उनमें से प्रत्येक को व्यक्तिगत रूप से प्रबंधित करना होगा।

.NET Framework 4.0 में, GAC कुछ परिवर्तनों के माध्यम से चला गया। जीएसी को दो में विभाजित किया गया, प्रत्येक सीएलआर के लिए एक।

सीएलआर संस्करण दोनों .NET Framework 2.0 और .NET Framework 3.5 सीएलआर 2.0 के लिए प्रयोग किया जाता है। जीएसी को विभाजित करने के लिए पिछले दो ढांचे के रिलीज़ में कोई ज़रूरत नहीं थी। नेट फ्रेमवर्क 4.0 में पुराने एप्लिकेशन को तोड़ने की समस्या।

सीएलआर 2.0 और सीएलआर 4.0 के बीच के मुद्दों से बचने के लिए, जीएसी को हर रनटाइम के लिए निजी जीएसी में विभाजित किया गया है। मुख्य बदलाव यह है कि CLR v2.0 अनुप्रयोग अब जीएसी में सीएलआर v4.0 विधानसभाएं नहीं देख सकते हैं।

स्रोत

क्यूं कर?

ऐसा प्रतीत होता है क्योंकि .NET 4.0 में सीएलआर परिवर्तन था लेकिन 2.0 से 3.5 में नहीं। वही बात 1.1 से 2.0 सीएलआर के साथ हुई। ऐसा लगता है कि जीएसी के पास अलग-अलग संप्रभुओं के संस्करणों को स्टोर करने की क्षमता है, जब तक वे एक ही सीएलआर से हैं। वे पुराने अनुप्रयोगों को नहीं तोड़ना चाहते हैं

4.0 में जीएसी परिवर्तन के बारे में एमएसडीएन में निम्नलिखित जानकारी देखें।

उदाहरण के लिए, यदि दोनों .NET 1.1 और .NET 2.0 समान जीएसी साझा करते हैं, तो एक .NET 1.1 आवेदन, इस साझा जीएसी से एक विधानसभा लोड हो रहा है, जिससे .NET 2.0 असेंबली हो सकती है, जिससे .NET 1.1 आवेदन को तोड़ सकता है

सीएलआर संस्करण दोनों .NET Framework 2.0 और .NET Framework 3.5 सीएलआर 2.0 के लिए प्रयोग किया जाता है। इसके परिणामस्वरूप, जीएसी को विभाजित करने के लिए पिछले दो ढांचे के रिलीज़ में कोई ज़रूरत नहीं थी। पुराने को तोड़ने की समस्या (इस मामले में, .NET 2.0) नेट फ्रेमवर्क 4.0 में अनुप्रयोगों को पुनरारंभ होता है, जिस पर सीएलआर 4.0 जारी किया गया था। इसलिए, CLR 2.0 और CLR 4.0 के बीच हस्तक्षेप के मुद्दों से बचने के लिए, जीएसी अब प्रत्येक रनटाइम के लिए निजी जीएसी में विभाजित किया गया है।

जैसा कि भविष्य के संस्करणों में सीएलआर को अपडेट किया जाता है, आप उसी चीज़ की अपेक्षा कर सकते हैं यदि केवल भाषा में परिवर्तन होता है तो आप उसी जीएसी का उपयोग कर सकते हैं

मैं यह भी जानना चाहता था कि 2 जीएसी और एनआईटी 4.0 के टिप्पणी अनुभाग में मार्क मिलर द्वारा निम्नलिखित स्पष्टीकरण के पास 2 ग्लोबल असेंब्ली कैश (जीएसी) है ।

मार्क मिलर ने कहा … 28 जून, 2010 12:13 अपराह्न

पोस्ट के लिए धन्यवाद। "हस्तक्षेप के मुद्दों" जानबूझकर अस्पष्ट था। लेखन के समय, मुद्दों पर अभी भी जांच की जा रही थी, लेकिन यह स्पष्ट था कि कई टूटे हुए परिदृश्य थे।

उदाहरण के लिए, कुछ एप्लिकेशन असेंबली का उपयोग करते हैं। लोडविथपार्टीअलनाम किसी विधानसभा के उच्चतम संस्करण को लोड करने के लिए। अगर उच्चतम संस्करण को v4 के साथ संकलित किया गया था, तो एक v2 (3.0 या 3.5) ऐप इसे लोड नहीं कर सकता, और ऐप क्रैश हो जाएगा, भले ही वह संस्करण हो जो काम किया होता। मूल रूप से, हमने GAC को इसके मूल स्थान के तहत विभाजित किया, लेकिन इसने विंडोज़ नवीनीकरण परिदृश्यों के साथ कुछ समस्याएं उत्पन्न कीं। इनमें से दोनों शामिल कोड पहले से ही भेज दिया गया था, इसलिए हमने हमारे (संस्करण-विभाजन वाले जीएसी को दूसरे स्थान पर ले जाया)।

इसका अधिकांश अनुप्रयोगों पर कोई प्रभाव नहीं होना चाहिए, और कोई रख-रखाव बोझ नहीं जोड़ता है दोनों स्थानों पर केवल देशी जीएसी एपीआई का उपयोग करके ही पहुंचना या संशोधित किया जाना चाहिए, जो अपेक्षा के अनुसार विभाजन के साथ काम करता है। ऐसी जगहें जहां यह सतह एपीआई के माध्यम से होती है जो कि GAC के पथों को बेनकाब करती है जैसे कि गेटकैचेपाथ, या प्रबंधित कोड में लोड किए गए एमएसकॉर्बिल के पथ की जांच कर रहा है।

यह ध्यान देने योग्य है कि हमने जीएसी स्थानों को संशोधित किया जब हम विधानसभा पहचान के भाग के रूप में हमने v2 को जारी किया था। वे जोड़ी गयी GAC_MSIL, GAC_32, और GAC_64, हालांकि सभी अभी भी% windir% \ विधानसभा के अंतर्गत हैं दुर्भाग्य से, यह इस रिहाई के लिए एक विकल्प नहीं था।

आशा है कि भविष्य के पाठकों में मदद करता है

यह बहुत समझ नहीं करता है, मूल जीएसी पहले से ही असेंबलियों के विभिन्न संस्करणों को संग्रहित करने में काफी सक्षम था। और एक कार्यक्रम ग्रहण करने के लिए बहुत कम कारण गलती से ग़लत विधानसभा के संदर्भ में होगा, सभी .नेट 4 विधानसभाओं को [विधानसभा संस्करण] 4.0.0.0 तक टकरा गया। नई इन-प्रोसेस साइड-बाय-साइड सुविधा को इसे बदलना नहीं चाहिए।

मेरा अनुमान है: वहां पहले से बहुत सारे एनईटी परियोजनाएं थीं, जो "जीएसी में कभी भी कोई संदर्भ नहीं" शासन को तोड़ दिया। मैंने इसे इस साइट पर कई बार देखा है

उन परियोजनाओं को तोड़ने से बचने का एक ही रास्ता: जीएसी को स्थानांतरित करें माइक्रोसॉफ्ट में बैक-कंपैट पवित्र है