2013-03-31 23 views
7

Есть ли способ увидеть скомпилированный вывод кода из самой визуальной студии. Я знаю, что мы можем использовать некоторое программное обеспечение отражателя и видеть код. но я просто хочу увидеть код компилятора во время кодирования в визуальной студии. поэтому я могу решить, каков наилучший подход к кодированию для определенной задачи, посмотрев на выходной код.Visual Studio Скомпилированный код

Примечание: поддержки для C# было бы достаточно для меня.

Обновлено:


Я хочу видеть промежуточный язык (IL) выход C# код.

+1

Любой конкретный язык/выход компилятора? – Oded

+0

Что вы подразумеваете под скомпилированным кодом? Машинный код, код после предварительной обработки, что-то еще? – Tushar

+0

Поддержка C# будет достаточной для меня –

ответ

13

Предполагая, что вы не говорите о языках .NET (C#, VB.NET, F # и т.д. ...), вы можете использовать disassembly window:

Окна Демонтажного показывает код сборки, соответствующие инструкции, созданных компилятором. Если вы отлаживаете управляемый код, эти инструкции по сборке соответствуют собственному коду, созданному компилятором Just-in-Time (JIT), а не промежуточному языку Microsoft (MSIL), сгенерированному компилятором Visual Studio.


Если, однако, вы говорите о просмотре IL для языков .NET - ILDASM может показать вам, как будет большинство дизассемблеров (например, рефлектор). Многие из них покажут вам свою интерпретацию IL/VB.NET IL по умолчанию, но вы можете всегда посмотреть IL напрямую.

Некоторые из них также имеют надстройки/расширения Visual Studio, которые позволяют видеть демонтаж непосредственно в Visual Studio (Reflector и Resharper оба это сделают).

+0

+1 для отражателя и reshaper –

+0

Я установил расширение Reflector 8 для Visual Studio 2013 Professional, но он не отображает код CIL. Он показывает код C# импортированных пакетов. Может быть, можно отобразить код CIL непосредственно в Visual Studio, но я не могу найти этот параметр? –

+0

Есть ли способ увидеть, как выглядит _syntactic sugar_ после компиляции? Например: 'var n = 1' будет скомпилирован в' int n = 1' или 'obj ?.prop' выполнил в' if (obj! = Null)? obj.prop: null' –