मुझे लगता है कि सबसे करीब आप मज़बूती से प्राप्त कर सकते हैं निर्धारित करने के लिए क्या CLR के संस्करण की आवश्यकता है है। आप इसे आईएलडीएएसएमएम का उपयोग करके और "मैनिफ़ेस्ट" नोड या परावर्तक को देखकर और "एप्लिकेशन.एक्सई" नोड के आईएल के रूप में विसर्जित दृश्य को देखकर कर सकते हैं। दोनों मामलों में एक टिप्पणी है जो सीएलआर संस्करण को इंगित करती है। आईएलडीएएसएम में, टिप्पणी "// मेटाडाटा संस्करण" है और रिफ्लेक्टर में टिप्पणी "लक्ष्य रनटाइम संस्करण" है।
यहाँ WindowsFormsApplication1.exe नाम के एक नेट WinForms आवेदन के लिए उदाहरण हैं:
ILDASM:
// Metadata version: v2.0.50727
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89) // .z\V.4..
.ver 2:0:0:0
}
.assembly extern System
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89) // .z\V.4..
.ver 2:0:0:0
}
परावर्तक:
.module WindowsFormsApplication1.exe
.subsystem 0x0002
// MVID: {CA3D2090-16C5-4899-953E-4736D6BC0FA8}
// Target Runtime Version: v2.0.50727
तुम भी संदर्भित विधानसभाओं की सूची देख सकते हैं और उच्चतम संस्करण संख्या के साथ संदर्भ की तलाश करें।
फिर, ILDASM "प्रकट" नोड आंकड़ों को देखने का उपयोग:
.assembly extern System.Drawing
{
.publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A) // .?_....:
.ver 2:0:0:0
}
.assembly extern System.Core
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89) // .z\V.4..
.ver 3:5:0:0
}
और सूचीबद्ध प्रत्येक संदर्भ के लिए परावर्तक का उपयोग कर, dissambly (अभी भी आईएल के रूप में) को देख:
.assembly extern System.Core
{
.ver 3:5:0:0
.publickeytoken = (B7 7A 5C 56 19 34 E0 89)
}
तक उच्चतम संस्करण मेटाडेटा के साथ संदर्भ ढूंढना आप निर्धारित कर सकते हैं कि फ्रेमवर्क का कौन सा संस्करण आया था, जो इंगित करेगा कि आपको चलाने के लिए एप्लिकेशन के लिए स्थापित फ्रेमवर्क के समान संस्करण की आवश्यकता है। ऐसा कहा जा रहा है, मैं इसे 100% विश्वसनीय के रूप में नहीं मानूंगा, लेकिन मुझे नहीं लगता कि यह जल्द ही किसी भी समय बदल जाएगा।
स्रोत
2008-11-28 15:00:46
भी देखें http://stackoverflow.com/questions/3460982/determine-net-framework- संस्करण-के-डीएलएल? टैब = सबसे पुराना # टैब-टॉप –