Вопрос

Я только что разобрал проект, чтобы отладить его с помощью Отражатель, но, похоже, это мешает декодированию "результатов компиляции" автоматических свойств, напримерследующая строка выдает мне синтаксическую ошибку.Я пытался исправить их вручную, но каждый раз, когда я исправляю одно, появляются новые.

private string <GLDescription>k__BackingField;

Могу ли я что-нибудь с этим сделать?

Это было полезно?

Решение

Ha!Глупый я:все, что мне нужно было сделать, это установить оптимизацию дизассемблера в настройках Reflector на .NET 3.5.Мой был на версии 2.0.

Другие советы

Компилятор генерирует поля с "невыразимыми именами", т.е.те, которые являются незаконными в самом C #, но являются допустимыми IL.

Нет абсолютно точного перевода IL в "обычный" C # (без автоматических свойств).Вы можете заменить < и > с _ который даст юридический код, но тогда, конечно, это не будет именно так больше не тот же код.Однако, если вам нужна только возможность отладки, это не будет проблемой.

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

В более широком смысле, есть ли у вас разрешение на декомпиляцию этого кода?Если автор не возражает против того, чтобы вы это сделали, он, вероятно, будет готов предоставить вам исходный код для начала, который облегчил бы вам жизнь.Если они не надо если вы хотите, чтобы вы для начала отладили их исходный код, вам следует рассмотреть этические (и потенциально юридические) последствия декомпиляции кода.Это может варьироваться в зависимости от местоположения:проконсультируйтесь с настоящим юристом для получения более точных рекомендаций.

Редактировать:Увидев ваш собственный ответ, я понимаю, что в этом есть большой смысл.Я оставлю это здесь в качестве справочного материала.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top