2009-11-20 1 views
9

Я пытаюсь декомпилировать библиотеку, но когда я нажимаю на имя класса или имя метода, код реализации пуст.Reflector doens't показать класс реализации

Например:

public bool MethodOne(string str) 
{ 
    // nothing 
} 

Что это может быть?

+2

может быть метод на самом деле пуст ... – Randolpho

+1

Я знаю, что вы поместили слово общественности на вашем примере метод, но это может быть абстрактный метод или просто пустой метод должен быть переопределен, если это необходимо? – Dan

+0

Это библиотека, которую я использую в проекте, и она работает. Это не абстрактный или виртуальный метод. Можно ли «удалить/скрыть» код из библиотеки с помощью метода обфускации? –

ответ

2

Возможно, вы открыли контрольную сборку или PIA, в которой нет кода.

Тело метода действительно может быть пустым.

(Другие возможности?)

+0

mmm Я использую его в проекте, и он работает ... Где может быть код? : P –

0

Какая версия framwork .Net является его помощью? Кажется, что существует некоторая проблема с сборками .net 4.0, где это происходит ... или это то, что говорят некоторые люди на форумах: Reflector Forum

Есть ли какой-нибудь ИЛ?

+0

Используется Micro Framework 4.0, и нет никакого IL :( –

+0

Я предполагаю, что Red Gate еще не закончил этот код. Если вы не используете предварительный релиз Reflector, вы можете попробовать его (http : //www.red-gate.com/MessageBoard/viewforum.php? f = 109) –

2

Я видел это вместе с сборками VSSDK.

Это может быть общедоступная библиотека интерфейса, но фактическая реализация «где-то скрыта». (? Может быть, в GAC)

Основной ход мысли:

  1. компилировать код какой-то «заглушке» сборка
  2. При загрузке в приложении, сборка заглушки не решена, но фактический

Я предлагаю вам установить точку останова в отладчике и посмотреть, что представляет собой фактическая загруженная сборка и откуда она загружается.

23

Возможно, вы попытаетесь отобразить ссылочные сборки, используемые Visual Studio, для поддержки поддержки нескольких таргетинга. Эти сборки являются только метаданными и не имеют реальной реализации.

Если это так, вы можете использовать VSCommands 2010 extension, чтобы получить путь к фактической сборке с реализацией.

assembly details http://vscommands.com/wp-content/uploads/2011/04/image12.png

+6

Это ответ. Только версии метаданных находятся в разделе «Ссылочные сборки» под программными файлами. Вам нужно открыть версии в windows \ microsoft.net \ framework \ .... – Will

+0

К сожалению, ссылка на сообщение в блоге больше не работает. Но этот ответ и один из @leppie мне очень помогли.На боковой ноте: функция «Показать детали сборки» VSCommands не отображается в списке функций новых версий расширения (я еще не пробовал это расширение). –