2010-01-30 26 views
6

¿Cómo se puede determinar si un conjunto de .Net en particular ya se ha conectado o no? Necesito verificar el código. Incluso invocar la línea de comandos estaría bien. Por el momento no veo ninguna forma de determinar esto.¿Cómo determinar si el ensamblaje ha sido ngen'd?

+0

En el código? Desde la linea de comando? ¿Interactivamente? ¿Qué? Tiene que estar en las propiedades del archivo en algún lugar ... –

Respuesta

3

Puede intentar encontrar su ensamblaje en "ngen cache" (C: \ Windows \ assembly \ NativeImages_v2XXXXXXX).

Los conjuntos entrenados tendrán el siguiente nombre de formato: [nombre base]. ni. [Baseextension].

+0

Windows 7 parece almacenarlos, es una ubicación ligeramente diferente, y sin '.ni'. en el nombre: C: \ Windows \ assembly –

+0

Muy extraño. Tengo instalado Windows 7 y la ruta "ngen cash" es "C: \ Windows \ assembly \ NativeImages_v2.0.50727_32 \". – Sasha

4

cheque de Código

Comprobar si estamos cargando una imagen nativa para el montaje de ejecución. Estoy buscando el patrón "\ assemblyname.ni" en la propiedad del nombre del archivo del módulo cargado.

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; 
     } 
    } 
} 

Comando Solución de línea:

Ejecutar "pantalla NGEN" en la línea de comandos.

Ejemplo:

pantalla NGEN MyTestsApp.exe

Si instala, imprime algo así como imágenes nativas: MyTestsApp, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null

y devuelve 0 (% errorlevel%)

De lo contrario, imprime:

Error: El ensamblaje especificado no está instalado.

y devuelve -1

Cuestiones relacionadas