Здравствуйте, migel, Вы писали:
M>Пофиксены ошибки. M>Добавлена поддержка foreach. M>Объявление делегата теперь нормально выводиться.
Традиционно пробую на ABCUpload5.dll от ABCUpload.NET...
Все так же валится по различныи ексепшинам, но прогресс на лицо,
в трее можно теперь раскрыть первую ноду
Здравствуйте, HotDog, Вы писали:
HD>Традиционно пробую на ABCUpload5.dll от ABCUpload.NET... HD>Все так же валится по различныи ексепшинам, но прогресс на лицо, HD>в трее можно теперь раскрыть первую ноду
Эээ ссылочкой не кинетесь откуда сие можно взять?
Здравствуйте, HotDog, Вы писали:
HD>Традиционно пробую на ABCUpload5.dll от ABCUpload.NET... HD>Все так же валится по различныи ексепшинам, но прогресс на лицо, HD>в трее можно теперь раскрыть первую ноду
Отбой, уже качается
Здравствуйте, HotDog, Вы писали:
HD>Здравствуйте, migel, Вы писали:
M>>Пофиксены ошибки. M>>Добавлена поддержка foreach. M>>Объявление делегата теперь нормально выводиться.
HD>Традиционно пробую на ABCUpload5.dll от ABCUpload.NET... HD>Все так же валится по различныи ексепшинам, но прогресс на лицо, HD>в трее можно теперь раскрыть первую ноду
Странно кроме того что эта либа у меня попросила .NET v 1.0 ничего не происходит
mscorlib 1.1 подсовывать не пробывали?
ИМХО кстати надо наверное сделать авто ресолвинг сборок от МС к более старшей версии если требуемой нет...
как думаете?
Здравствуйте, migel, Вы писали:
M>Странно кроме того что эта либа у меня попросила .NET v 1.0 ничего не происходит M>mscorlib 1.1 подсовывать не пробывали?
Так у меня она ничего не просила
Просто сваливала по NullReferenceException, но после Continue всетаки грузится дальше и всплывает в дереве.
Теперь иду дальше, открываю ветки
ABCUpload5.dll->WebSupergoo.ABCUpload5, на классе x1 жму Disassembler ->
"An unhandled exception of type 'Phoenix.Reflection.Reader.ModuleReaderException' occurred in ilreader.dll" в GetTypeReference(int token)
Decompile падает с криками о System.NullReferenceException в WriteExpressionsList(...)
Тестил все на ревижене 42 из свина, собирал сам
M>ИМХО кстати надо наверное сделать авто ресолвинг сборок от МС к более старшей версии если требуемой нет... M>как думаете?
На моей машине вообще нет 1.0, поэтому такая фича просто архиважна
Здравствуйте, HotDog, Вы писали:
HD>Здравствуйте, migel, Вы писали:
M>>Странно кроме того что эта либа у меня попросила .NET v 1.0 ничего не происходит M>>mscorlib 1.1 подсовывать не пробывали?
HD>Так у меня она ничего не просила HD>Просто сваливала по NullReferenceException, но после Continue всетаки грузится дальше и всплывает в дереве.
Это глюки инициализации статических переменных
Пытаюсь забороть...
HD>Теперь иду дальше, открываю ветки HD>ABCUpload5.dll->WebSupergoo.ABCUpload5, на классе x1 жму Disassembler ->
HD>"An unhandled exception of type 'Phoenix.Reflection.Reader.ModuleReaderException' occurred in ilreader.dll" в GetTypeReference(int token)
Аха это она пытается 1.0 все таки загрузить HD>Decompile падает с криками о System.NullReferenceException в WriteExpressionsList(...)
Это последствия M>>ИМХО кстати надо наверное сделать авто ресолвинг сборок от МС к более старшей версии если требуемой нет... M>>как думаете?
HD>На моей машине вообще нет 1.0, поэтому такая фича просто архиважна
Ок бум думать.
Здравствуйте, HotDog, Вы писали:
HD>Rev 43: HD>ILReader\Reflection\ArrayInfo.cs' could not be opened ('The system cannot find the file specified. ') HD>Не все зачекано ?
Пофиксил..
только проблемы с отсутствующим framework пока остались
Я тут неприятную последовательность команд нарыл на которой падает декомпилятор (см. Tests/TernaryOperatorTest.cs )
пока в раздумьях как фиксить
Ага, теперь нормально компилит.
M>Я тут неприятную последовательность команд нарыл на которой падает декомпилятор (см. Tests/TernaryOperatorTest.cs ) M>пока в раздумьях как фиксить
посмотреть не могу из за отстуствия TernaryOperatorTest.cs в SVN
Здравствуйте, HotDog, Вы писали:
HD>Здравствуйте, migel, Вы писали:
M>>Пофиксил..
HD>Ага, теперь нормально компилит.
M>>Я тут неприятную последовательность команд нарыл на которой падает декомпилятор (см. Tests/TernaryOperatorTest.cs ) M>>пока в раздумьях как фиксить
HD>посмотреть не могу из за отстуствия TernaryOperatorTest.cs в SVN
что за напасть
положил.
Здравствуйте, migel, Вы писали:
M>>>Я тут неприятную последовательность команд нарыл на которой падает декомпилятор (см. Tests/TernaryOperatorTest.cs ) M>>>пока в раздумьях как фиксить
Интересный факт, что Reflector "собирает" выражение в совершенно другом виде
int num1 = 0;
int num2 = 100;
int num3 = (num2 != 100) ? 10 : ((num1 == 0) ? 1 : 100);
исходный
int x = 0;
int y = 100;
int z = x == 0 ? ((y != 100) ? 10 : 1) : 100;
да, еще хотел спросить: я не обфусцирую сборки, но ни феникс ни рефлектор не показывают оригинальные названия переменных.
Это невозможно или просто не до этого пока ?
Здравствуйте, HotDog, Вы писали:
HD>Интересный факт, что Reflector "собирает" выражение в совершенно другом виде
HD>
HD> int num1 = 0;
HD> int num2 = 100;
HD> int num3 = (num2 != 100) ? 10 : ((num1 == 0) ? 1 : 100);
HD>
HD>исходный
HD>
HD> int x = 0;
HD> int y = 100;
HD> int z = x == 0 ? ((y != 100) ? 10 : 1) : 100;
HD>
скорее всего рефлектор стэк раскручивает с конца HD>да, еще хотел спросить: я не обфусцирую сборки, но ни феникс ни рефлектор не показывают оригинальные названия переменных. HD>Это невозможно или просто не до этого пока ?
Имен локальных переменных по определению нет в метаданных
Здравствуйте, HotDog, Вы писали:
HD>Здравствуйте, migel, Вы писали:
M>>Имен локальных переменных по определению нет в метаданных
HD>Нда, опять мокрософт облажался
Да нет, просто это ненужная инфа для рунтайма, вот их и не вводили...
По идее если есть отладочная информация то можно из нее брать именя переменных... только ктож это добро конечному пользователю поставлять то будет .
HD>Интересный факт, что Reflector "собирает" выражение в совершенно другом виде
HD>
HD> int num1 = 0;
HD> int num2 = 100;
HD> int num3 = (num2 != 100) ? 10 : ((num1 == 0) ? 1 : 100);
HD>
HD>исходный
HD>
HD> int x = 0;
HD> int y = 100;
HD> int z = x == 0 ? ((y != 100) ? 10 : 1) : 100;
HD>
А Reflector значит облажался , не правомочное преобразование.
public class A {
public int f1(int x, int y) {
int z = (x == 0) ? ((y != 100) ? 10 : 1) : 100;
return z;
}
public int f2(int x, int y) {
int z = (y != 100) ? 10 : ((x == 0) ? 1 : 100);
return z;
}
public static void Main() {
A a = new A();
System.Console.WriteLine(a.f1(1, 1).ToString());
System.Console.WriteLine(a.f2(1, 1).ToString());
}
}
Должно выводиться 100 и 10, а Reflector декомпилирует f1 и f2 одинаково (как f2).
Здравствуйте, migel, Вы писали:
M>Здравствуйте, Mr.Gremlin, Вы писали:
MG>>Должно выводиться 100 и 10, а Reflector декомпилирует f1 и f2 одинаково (как f2). M>Мдааа засада однако M>а как с таким саламандер справляется?
Вот так:
public int f1(int x, int y)
{
return (x != 0) ? 100 : ((y == 100) ? 1 : 10);
}
public int f2(int x, int y)
{
return (y == 100) ? ((x != 0) ? 100 : 1) : 10;
}
оригинал
public int f1(int x, int y)
{
int z = (x == 0) ? ((y != 100) ? 10 : 1) : 100;
return z;
}
public int f2(int x, int y)
{
int z = (y != 100) ? 10 : ((x == 0) ? 1 : 100);
return z;
}
Здравствуйте, migel, Вы писали:
M>Мдааа засада однако
Тернарные операции вообще одна из самых засадных вещей при декомпиляции сборок. Этот пример кстати не трудный, я встречал по несколько вложенных тернарных операций, в которых ещё и объекты создаются — вот где засада
PS: Кстати моя тулза аналогичного назначения справилась :
public int f1(int x, int y)
{
int i1;
int i2;
return i2 = i1 = x == 0?y != 100?10:1:100;
}
public int f2(int x, int y)
{
int i1;
int i2;
return i2 = i1 = y != 100?10:x == 0?1:100;
}