Опубликованное приложение (форма Windows) это машинный код? - PullRequest
0 голосов
/ 18 ноября 2011

Я знаю, вопрос может быть обычным для многих, но я запутался, как и все. Я читаю .net с помощью c #. Я просмотрел много статей, а также MSDN. Мое сомнение:

Когда я разрабатываю код приложения формы Windows на C # в VS и запускаю его, являются ли файлы в Project \ bin \ Debug \ с расширением ".exe" промежуточным кодом или машинным кодом? и когда я его публикую, в момент, когда я получаю установщик, это машинный код или промежуточный код? потому что иногда установщик требует .net установлен.

Пожалуйста, помогите мне понять эту концепцию.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 18 ноября 2011

Скомпилированный .exe содержит MSIL (код Microsoft Intermediate Language), вот как это происходит (с здесь ):

  • Исходный код преобразуется в Common Intermediate LanguageCIL эквивалентен языку ассемблера для CPU.
  • CIL затем собирается в виде так называемого байт-кода, и создается сборка .NET.
  • После выполнения сборки .NET егокод передается через JIT-компилятор среды выполнения для генерации собственного кода.Может также использоваться заблаговременная компиляция, что исключает этот шаг, но за счет переносимости исполняемого файла.
  • Собственный код выполняется процессором компьютера.

Когда я публикую его, когда я получаю установщик, это машинный код или промежуточный код?поскольку иногда установщику требуется установленный .net.

.Net .exe - это всегда код MSIL, поэтому установщик может устанавливать платформу .net ранее как предварительное условие для вашего приложения.

2 голосов
/ 18 ноября 2011

Упрощенные ответы:

Когда я разрабатываю код приложения Windows для C # в VS и запускаю его, файлы в Project \ bin \ Debug \ с расширением ".exe" являютсяПромежуточный код или машинный код?

Это IL-код, который будет преобразован в двоичный / машинный код с помощью .NET при запуске .exe

и при публикации, когда я получуУстановщик, это машинный код или промежуточный код?потому что иногда для установки требуется .net.

То же самое.Разница между режимом выпуска (который вы должны опубликовать) и режимом отладки заключается в том, что первый оптимизирован, а другой - для облегчения отладки.

1 голос
/ 18 ноября 2011

Это все MSIL код, исполняемые файлы в Project\bin\Debug такие же, как те, которые вы получаете при публикации приложения, но они связаны с включенными символами отладки.

...