2011-04-14 4 views
19

Ngen을 C# 실행 파일로 작성했습니다. 그것은 성공적 이었지만 생성 된 파일이 내 PC에 어디에 있는지 알 수 없습니다. MSDN은Ngen을 실행 한 후 생성 된 파일의 위치는 어디서 찾을 수 있습니까?

편집이 ...이, 네이티브 이미지 캐시에 어디 있는지 알아낼 여전히 수 없습니다해야 말한다 : 나는 그래서 내가 실제 파일이 필요합니다, 거기에 objdump를 실행하려면

EDIT2 : 내 putput NGEN을 실행하는 것입니다 :

C:\Documents and Settings\nmea\My Documents\Visual Studio 2008\Projects\Consol 
eApplication4\ConsoleApplication4\bin\Release>ngen install ConsoleApplication4.e 
xe 
Microsoft (R) CLR Native Image Generator - Version 2.0.50727.3053 
Copyright (c) Microsoft Corporation. All rights reserved. 
Installing assembly C:\Documents and Settings\nmea\My Documents\Visual Studio 
2008\Projects\ConsoleApplication4\ConsoleApplication4\bin\Release\ConsoleApplica 
tion4.exe 
    Compiling assembly C:\Documents and Settings\nmea\My Documents\Visual Stud 
io 2008\Projects\ConsoleApplication4\ConsoleApplication4\bin\Release\ConsoleAppl 
ication4.exe (CLR v2.0.50727) ... 
ConsoleApplication4, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 

답변

20

정확한 위치는 버전에 따라 다를 수 있지만이 비슷한 것 :

C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Web\ace3bede2f516f9e5bca620ad86cc063>System.Web.ni.dll 

그들은 C:\Windows\assembly에서 시작하고 각 .NET 버전에 대한 하위 폴더 NativeImages_vXXX있다. 그런 다음 네이티브 이미지가있는 각 dll에 대한 하위 폴더가 있습니다. 그 고유 한 버전 식별자에 대한 다른 하위 폴더 (그래서 당신은 동일한 DLL의 서로 다른 버전에서 여러 개의 기본 이미지를 가질 수 있습니다). 마지막으로 네이티브 dll 자체.

Windows Exlporer에서이 디렉터리로 이동할 수 없습니다. cmd를 사용하십시오. Explorer에는 GAC 및 기본 이미지가 작동하는 방식에 대한 세부 정보가 숨겨져 있고 더 멋진 UI가 표시되는 셸 확장이 있습니다.

+2

당신은 탐색기에서 GAC를 탐색 할 수 있습니다 밖으로 밝혀 졌 - 확실하지 않은 대답을 추가했습니다 코멘트로서 더 좋으면. –

+0

@Tim Barass, 좋은 팁, +1. –

+0

감사 샘, cmd 탐색에 좋은 팁 :) – devshorts

2

당신은 C에서 NativeImages_blabla 폴더에서 찾을 수 있습니다 : \ WINDOWS \ 어셈블리. 또한 .NET 3.5 이상에서는 실제로 NGENed 이미지에 실제로 액세스 할 수 없습니다. 나는 그것이 모든 파일에 대해 하나의 큰 데이터베이스를 사용하는 것으로 되돌아 왔지만, 생성 된 이미지가 디스크에서 볼 수있는 위치가 아니므로 확신 할 수 없다.

+0

내 PC의 c : \ windows \ assembly 아래에 "다운로드"라는 폴더가 하나만 있습니다. "native"로 시작하는 파일을 찾을 수 없습니다. – paseena

+0

당신은 .NET 4.0을 사용하고 있습니까? –

+0

visual C# 2008 SDK 프롬프트에서 실행 중입니다. Ngen 버전은 "Microsoft (R) CLR 네이티브 이미지 생성기 - 버전 2.0.50727.3053" – paseena

21

여기에서 비슷한 문제를 탐색하고 레지스트리를 변경하면 탐색기에서 GAC를 탐색 할 수 있습니다. 마이크로 소프트 \ 퓨전 \ HKEY_LOCAL_MACHINE \ 소프트웨어에서

DisableCacheViewer라는 DWORD 항목을 만들고, 그 후 1

로 설정, 새로운 탐색기 창을 열고 예로 이동 c : \ windows \ assembly.

2

ngen 디스플레이 시도 AssemblyName/verbose | findstr "파일 :"

예 : % windir % \ Microsoft.NET \ Framework \ v4.0.30319 \ ngen.exe display System.Xaml/verbose | findstr "File :"

0

글쎄, 위치를 찾는 데 오랜 시간이 걸렸습니다.

음, 내면은 c:\Windows\assembly 폴더입니다.하지만이 폴더를 열었을 때만 .NET 어셈블리를 볼 수 있었기 때문에 일부 숨겨진 폴더가있을 것이라고 생각했습니다. 그래서 관리자 권한으로 명령 프롬프트를 열면 아래와 같은 폴더 목록을 볼 수 있습니다. ...

GAC, GAC_32, GAC_64, GAC_MSIL, NativeImages_v2.0.50727_32 
NativeImages_v2.0.50727_64, NativeImages_v4.0.30319_32, 
NativeImages_v4.0.30319_64 

놀라운 것을 알 수 있습니다. 내 말은, 여기서 필요한 폴더 만 볼 수 있지만 어셈블리는 볼 수 없다는 뜻입니다. 글쎄, 아무 문제 없어, 행복해.

그래서 내 응용 프로그램은 v4과 64 비트 컴파일로 만들어 졌으므로 필요한 EXE 파일은 NativeImages_v4.0.30319_64 폴더의 루트에 있습니다.