Связать библиотеки .NET для запуска приложения на компьютере без .NET? - PullRequest
7 голосов
/ 16 марта 2010

AFAIK, ngen превращает MSIL в собственный код (также называемый pre-JIT), однако я никогда не обращал слишком много внимания на его влияние на производительность при запуске. Для приложений Ngen все еще требуются библиотеки базовых классов .NET (среда выполнения).

Поскольку в библиотеках базовых классов есть все, что нужно нашим сборкам .NET (верно?), Можно ли было бы доставлять библиотеки DLL среды с моим приложением ngen, чтобы не требовалось устанавливать среду выполнения? (например, сценарий для большинства компьютеров с Windows XP)

О, и, пожалуйста, не упоминайте Salamander Linker от Remotesoft или Постсборка для Xenocode . Они не для моего (и многих) текущего бюджета (и, похоже, они просто объединяют инфраструктуру в виртуализированной среде, что, как я полагаю, означает большие размеры загрузки и медленное время запуска)

EDIT:
Теперь я знаю, что ngen не делает то, что думал.
Но возможно ли связать файлы .NET с приложением, не используя виртуальную машину?

Ответы [ 4 ]

5 голосов
/ 16 марта 2010

Вы не можете сделать это. Многие важные компоненты, такие как сборщик мусора, являются частью CLR (которая является частью среды выполнения платформы), поэтому для успешного выполнения вашего приложения вам нужно установить среду.

2 голосов
/ 04 сентября 2014

Посмотрите на Microsoft .NET Native :

.NET Native компилирует C # в собственный машинный код, который работает как C ++. Вы будете продолжать извлекать выгоду из производительности и знакомства с .NET Framework с отличной производительностью нативного кода.

Он будет интегрирован в Visual Studio 2014 .

2 голосов
/ 16 марта 2010

Это не так, как работает Ngen. Это только обходит этап компиляции JIT. Полученный файл .ni.dll содержит только машинный код, а не метаданные сборки. Для этого вам нужно сохранить оригинальную сборку. И сборки CLR и .NET Framework должны быть доступны на целевом компьютере, что требует установки .NET.

1 голос
/ 16 марта 2010

См. Как скомпилировать приложение .NET для собственного кода? - консенсус выглядит так, что это невозможно.

...