Чек из кода
Проверьте, загружаем ли мы собственное изображение для исполняемой сборки. Я ищу шаблон "\ 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 display» в командной строке.
Пример:
ngen display MyTestsApp.exe
Если установлено, оно печатает что-то вроде
Родные изображения:
MyTestsApp, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = ноль
и возвращает 0 (% errorlevel%)
В противном случае выводится:
Ошибка: указанная сборка не установлена.
и возвращает -1