2010-01-30 12 views
6

आप कैसे निर्धारित कर सकते हैं कि कोई विशेष .NET असेंबली पहले से ही ngen'd किया गया है या नहीं? मुझे कोड से जांचना होगा। यहां तक ​​कि कमांड लाइन का आह्वान भी ठीक होगा। फिलहाल मैं इसे निर्धारित करने का कोई तरीका नहीं देख सकता।यह निर्धारित करने के लिए कि क्या असेंबली ngen'd किया गया है?

+0

कोड में? कमांड लाइन से? सहभागितापूर्ण तरीके से? क्या? इसे फ़ाइल गुणों में कहीं भी होना चाहिए ... –

उत्तर

3

आप अपनी असेंबली को "ngen कैश" (सी: \ विंडोज \ असेंबली \ NativeImages_v2XXXXXXX) में खोजने का प्रयास कर सकते हैं।

Сached विधानसभाओं में निम्नलिखित प्रारूप का नाम होगा: [बेसनाम]। एनआई। [बेसक्स्टेंशन]

+0

विंडोज 7 उन्हें स्टोर करने के लिए लगता है कि यह थोड़ा अलग स्थान है, और 'nni' के साथ। नाम में: सी: \ विंडोज \ असेंबली –

+0

बहुत अजीब। मेरे पास विंडोज 7 स्थापित है, और "ngen cash" पथ "सी: \ विंडोज \ असेंबली \ NativeImages_v2.0.50727_32 \" है। – Sasha

4

चेक कोड से

चेक अगर हम क्रियान्वित विधानसभा के लिए एक देशी छवि लोड कर रहे हैं। मैं लोड मॉड्यूल फ़ाइल नाम संपत्ति में पैटर्न "\ assemblyname.ni" की तलाश में हूं।

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Reflection; 
using System.Diagnostics; 

namespace MyTestsApp 
{ 
    class Program 
    { 
     static bool Main(string[] args) 
     { 

      Process process = Process.GetCurrentProcess(); 

      ProcessModule[] modules = new ProcessModule[process.Modules.Count]; 
      process.Modules.CopyTo(modules,0); 

      var niQuery = from m in modules where m.FileName.Contains("\\"+process.ProcessName+".ni") select m.FileName; 
      bool ni = niQuery.Count()>0 ?true:false; 

      if (ni) 
      { 
       Console.WriteLine("Native Image: "+niQuery.ElementAt(0)); 
      } 
      else 
      { 
       Console.WriteLine("IL Image: " + process.MainModule.FileName); 
      } 

      return ni; 
     } 
    } 
} 

कमांड लाइन समाधान:

रन "NGEN प्रदर्शन" कमांड प्रॉम्प्ट पर।

उदाहरण: MyTestsApp, संस्करण = 1.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = अशक्त

:

NGEN प्रदर्शन MyTestsApp.exe

तो स्थापित है, इसे बाहर मूल निवासी छवियाँ की तरह कुछ प्रिंट

और रिटर्न 0 (% errorlevel%)

अन्यथा, यह बाहर प्रिंट:

त्रुटि: निर्दिष्ट असेंबली स्थापित नहीं है।

और रिटर्न -1

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

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