2010-01-30 6 views

답변

3

"ngen 캐시"(C : \ Windows \ assembly \ NativeImages_v2XXXXXXX)에서 어셈블리를 찾을 수 있습니다.

포함 된 어셈블리의 형식 이름은 [basename]입니다. ni [베이스 확장].

+0

윈도우 7은 그들을 저장하는 것 같다 약간 다른 위치이며, 아니 '. C : \ Windows \ assembly –

+0

매우 이상합니다. Windows 7이 설치되어 있고 "ngen cash"경로는 "C : \ Windows \ assembly \ NativeImages_v2.0.50727_32 \"입니다. – Sasha

4

확인 우리가 실행 어셈블리에 대한 네이티브 이미지를로드하는 경우 코드에서

확인합니다. 로드 된 모듈 filename 속성에서 "\ 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을 반환합니다.

관련 문제