2010-12-15 15 views
9

संभव डुप्लिकेट:
Determine framework (CLR) version of assemblyमैं .NET Framework के संस्करण को कैसे देखूं जो एक डीएलएल फ़ाइल के खिलाफ संकलित किया गया था?

मैं एक पुस्तकालय/DLL फ़ाइल जो .NET फ्रेमवर्क में संकलित किया गया है है।

अब (बिना किसी कोडिंग के) मैं .NET Framework संस्करण को देखना चाहता हूं जिसका उपयोग इस लाइब्रेरी को संकलित करने के लिए किया गया था। मुझे यह पता होना चाहिए कि यह 2.0, 3.5, या 4.0 था। क्या कोई ऐसा उपकरण है जो इसे प्राप्त करने में मेरी सहायता करता है? (मुझे पता है कि इसे फ्रेमवर्क के संस्करण 4.0 के तहत संकलित किया जाना चाहिए, लेकिन मुझे 100% सुनिश्चित होना चाहिए कि फ्रेमवर्क का संस्करण 4.0 उपयोग किया गया था)।

+0

जुड़ा हुआ जवाब कोई वास्तविक मैच नहीं है। सीएलआर संस्करण! = ढांचा संस्करण। @truth: आपका प्रश्न बंद होने, दोबारा पोस्ट करने और इंगित करने की संभावना है कि डुप्ली आपके प्रश्न का उत्तर नहीं देती है। –

+0

@ हंस: आप दोबारा क्यों पोस्ट करेंगे? उस बिंदु को इंगित करने के लिए बस प्रश्न या टिप्पणी संपादित करें। अगर यह गलती से बंद हो जाता है तो इसे फिर से खोला जाएगा। – Cascabel

उत्तर

13

आपको ILDASM का उपयोग करना होगा। आप दोगुना प्रकट क्लिक करें और आप मिल

// मेटाडाटा संस्करण: v2.0.50727

या

// मेटाडाटा संस्करण: v4.0.30319

फ्रेमवर्क 3.0 और 3.5 वास्तव में नयी रिलीज नहीं कर रहे हैं सीएलआर का, तो आप वी 2.0 रखेंगे। अधिकतर, आप अनुमान लगा सकते हैं कि निर्भरताओं को चबाकर आपको किस ढांचे की आवश्यकता होगी। कुछ डीएल केवल 3.5 में उपलब्ध हैं, लेकिन यदि आप मैन्युअल रूप से 2.0 में पीसी की प्रतिलिपि बनाते हैं तो ऐप काम करेगा। चेक सी: \ windows \ Microsoft.NEt \ Framework और आप उन्हें उनके अनुसार फ़ोल्डर में पाएंगे।

आशा इस

4

असेंबली मैनिफेस्ट का निरीक्षण करने और सिस्टम के संस्करण को देखने के लिए ILDASM या Reflector का उपयोग करें। * असेंबली जहां संदर्भित किया गया है।

उदाहरण के लिए, एक .NET विधानसभा के प्रकट मैं देख सकता हूँ कि इस लक्ष्यीकरण फ्रेमवर्क 1,1

// Metadata version: v1.1.4322 
.assembly extern mscorlib 
{ 
    .publickeytoken = (B7 7A 5C 56 19 34 E0 89)       // .z\V.4.. 
    .ver 1:0:5000:0 
} 
.assembly extern System.Web 
{ 
    .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A)       // .?_....: 
    .ver 1:0:5000:0 
} 
.assembly extern System 
{ 
    .publickeytoken = (B7 7A 5C 56 19 34 E0 89)       // .z\V.4.. 
    .ver 1:0:5000:0 
} 
.assembly extern ICSharpCode.SharpZipLib 
{ 
    .publickeytoken = (1B 03 E6 AC F1 16 4F 73)       // ......Os 
    .ver 0:84:0:0 
} 
.assembly ReverseProxy 
{ 

    // --- The following custom attribute is added automatically, do not uncomment ------- 
    // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(bool, 
    //                    bool) = (01 00 00 01 00 00) 

    .hash algorithm 0x00008004 
    .ver 0:0:0:0 
} 
.module ReverseProxy.dll 
// MVID: {3F1B8B81-1B8F-4DD7-A71F-FD019C095F25} 
.imagebase 0x00400000 
.file alignment 0x00000200 
.stackreserve 0x00100000 
.subsystem 0x0003  // WINDOWS_CUI 
.corflags 0x00000001 // ILONLY 
// Image base: 0x010A0000 
+1

आपको TargetFrameworkAttribute को देखना चाहिए - सिस्टम libs – Lu55

+0

@ Lu55 के विशिष्ट संस्करणों पर नहीं, ध्यान रखें कि TargetFrameworkAttribute केवल फ्रेमवर्क 4.0 –

1

बनाया गया था मैं Reflection का प्रयोग करेंगे देखने पर ILDASM का उपयोग कर:

Assembly a = Assembly.ReflectionOnlyLoadFrom("C:\\library.dll"); 
Console.WriteLine(a.ImageRuntimeVersion); 

लेकिन, मुझे मैं एक प्रोग्रामर हूँ। मुझे नहीं पता कि इन प्रकार की चीजों को बिना किसी कोडिंग के "कैसे निर्धारित किया जाए।

+1

में प्रस्तुत किया गया था, केवल उस अंतिम पंक्ति के लिए इस उत्तर को ऊपर उठाने के लिए टेम्पलेट किया गया है, हालांकि यह एक भयानक उत्तर है। :) – Arafangion

9

में मदद करता है आप एक परियोजना में एक संदर्भ के रूप में यह है। आप उस संदर्भ के लिए गुणों के तहत रनटाइम संस्करण को देखने में सक्षम होना चाहिए। कोडिंग की आवश्यकता नहीं = -)

alt text