MSIL to native

7 отговора 304 прегледа
#1

MSIL to native

Zdraveite!

Ot skoro razkykvam C# , interesuvame ima li na4in da si kompiliram edno .exe ot MSIL do obiknovenno .exe , prosto iskam da si startiram tova .exe na koqto i da e ma6ina s Windows bez da ima nujda da instaliram .NET Framework

Отговор
в отговор на theNew #2

Re: MSIL to native

Ima nachin. Kazwa se Native Image Generator (ngen.exe). Razprostranqwa se zaedno s .NET Framework-a.

Отговор
в отговор на coder #3

Re: MSIL to native

прегледай пак наброските в документацията около .НЕТ-а....

нген-а прави компилацията до нейтив код (спестява първия пас на JIT компилатора) - т.е. превежда мсил-а в нейтив инструкции т.е. прави .ехе файл и го слага в кеша на компилираните асемблита.
ОБАЧЕ това не означава, че НЕ трябва да имаш .НЕТ фреймуърк. Всички функции, целия мениджд код рапинг, е в .нет рън-тайм-а (основната част е mscoree.dll).
Т.е. .НЕТ фреймуърка ТРЯБВА да е инсталиран, за да можеш да стартираш .ехе-то.
Тва е се едно нормално да компилираш сорс с Вижуал Ц и да нямаш msvcrt.dll-a.

Плюс тва ползите от тази предварителна компилация са спорни. JIT-a първо пуска компилатора до нейтив код и след тва прави оптимизации (или поне теоретично ни трябвало да е така) спрямо текущото състояние на компа.
С нген-а тези неща не става.

There are 10 types of people in this world one who understand binary jokes and one who not
Отговор
в отговор на coder #4

Re: MSIL to native

..ve4e go probvax ,no toi samo ke6ira kompiliraniq kod i se obry6ta direktno kym nego , no ne vidqx da syzdava .exe !

Отговор
в отговор на theNew #5

Re: MSIL to native

Накратко казано, не.

Отговор
в отговор на theNew #6

Re: MSIL to native

Няма начин!
.NET Framework е с такава архитектура, че зависи много сериозно от стандартните си библиотеки (Base Class Library) и от стандартните .NET-ски типове (т. нар. Common Type System).

Ако има компилатор, то той трябва да вкара целия Runtime Execution Engine в това EXE-то и ще стане като онзи менте компилатор за Java (даже забравих как се казва), дето ти прави 20 MB .EXE файл и вкарва в него цялата виртуална машина. Това, че има JIT-compiler, не означава, че кодът е неуправляван. Пак се следи за code-based security, за разни атрибути, пак assembly-тата си имат метаданни, пак не можеш да препълниш масив или да омажеш типовете на ниско ниво. По идея намя начин. Кодът е управляван.

Идеята на .NET е да бъде managed execution environment, а не просто поредната версия на Visual C++ и другите отпадъчни M$ технологии като примерно MFC и Visual Basic + ASP. И не ми казвайте че не са отпадъчни технологии, защото самите M$ се опитват все-повече да не ги поддържат и да не ги ползват, освен ако не се налага (примерно ако трябва да се дописва стар проект, изграден върху тях).

Светлин Наков
[линк]

Редактирано от HAKOB на

Отговор
в отговор на HAKOB #7

Re: MSIL to native

Не отпадъчни ами упадъчни (а ВБ е упадъчен още от момента на създаването си ), все таки обаче критичните откъм време за изпълнение приложения все още ги правят на Ц++ и при това НЕ на managed C++.

Въпреки всичките изявления за "small performance penalty" за ЦЛРa (рън-тайма), все още никак не е малкo.

Подчертавам "все още", защото нещата определено вървят към подобрение. С# 2.0 спецификацията дава надежда.
( нали човек от Борланд е шеф там на екипа та нема как, чудех се аз що Ц#-а тук таме ми мяза на Делфи )

There are 10 types of people in this world one who understand binary jokes and one who not
Отговор
в отговор на HAKOB #8

VC++

".... а не просто поредната версия на Visual C++ и другите отпадъчни M$ технологии ...."

Visual C++ е незаменимо средство за разработка, когато става дума за производителност и тогава разни бози от сорта на Java и .NET просто не вървят! Така че помисли малко преди да говориш за "отпадъчни" технологии ... Виж за MFC-то мога да се съглася донякъде

Отговор