Проблем с иласма

Имам доста голяма програма в .net 3.5 SP1, която се компилира добре. Когато обаче искам да го маскирам с Obfuscator Pro (оценка засега), Obfuscator спира със следната грешка:

[Компилация] Това приложение поиска от Runtime да го прекрати по необичаен начин.
[Компилация] Моля, свържете се с екипа за поддръжка на приложението за повече информация.
[Компилация] ilasm върна 3
[Компилация Изход] Грешка при компилиране.

Тъй като грешката идва от ILASM, реших да направим това, което Obfuscator прави (без обфускация) и изпълних следните команди:

=> ildasm.exe /OUT=C:\MyApp.exe.il /TEXT /NOBAR /RAWEH /QUOTEALLNAMES /UTF8 /LINENUM /FORWARD C:\MyApp\bin\Release\MyApp.exe
=> ilasm C: \MyApp.exe.il

Първата команда (ILDASM) минава добре, получавам 450MB IL файл.
Втората команда (ILASM) обаче се срива със следната грешка:

Това приложение е поискало от Runtime да го прекрати по необичаен начин.
Моля, свържете се с екипа за поддръжка на приложението за повече информация.

Някой има ли идея каква може да е грешката?
Системата ми е Windows 7 x64 с инструментите от Visual Studio 2008 (SP1).

АКТУАЛИЗАЦИЯ:
Свързах се с поддръжката на Obfuscator и направих някои тестове за тях. Между другото, там има наистина услужливи хора.
Открихме, че грешката възниква само при използване на x86 ILASM от папката .net 2.0 framework. Когато използвате този от framework64\v2.0... тогава грешката не се случва.
Също така, когато използвате (x86 или x64) ILASM от .net 4.0 (Beta 2) минава добре.
Така че това наистина изглежда като грешка в ILASM на .net 2.0 за x86.


person Marc    schedule 22.01.2010    source източник
comment
@Rubens Farias: Прав си, не съм се свързвал с Microsoft досега :-) Не мисля обаче, че това ще помогне. (+1 все пак)   -  person Marc    schedule 22.01.2010
comment
@Rubens Farias: Да, това ще бъде следващата ми стъпка. Но реших първо да видя дали някой тук може да ми помогне. Не ми изглежда като проблем на dotfuscator (или съм направил нещо нередно, може би с референтни сборки или така).   -  person Marc    schedule 22.01.2010
comment
Добре; ще напусна тези коментари, за да не се забърквам с отговорите на хората   -  person Rubens Farias    schedule 22.01.2010


Отговори (1)


Въпреки че проблемът с ILASM не е наистина решен, следното коригира проблема:

  • Използвайте ILASM от папка framework64
    x64 ILASM работи добре. Въпреки това не можах да принудя Dotfuscator да го използва.
  • Инсталирайте .net framework 4.0 (Beta 2)
    Когато се използва ILASM от .net framework 4.0, той работи добре.
  • Стартирайте Dotfuscator с флага '/inpl:on'
    Поддръжката на Dotfuscator ми каза да използвам този флаг и той работи добре.
    Според тях не трябва да има разлика в генерирания EXE, така че използвам това решение в момента (Флагът не е наличен в GUI).
person Marc    schedule 15.02.2010
comment
Само любопитно, колко RAM имаше, когато тества това? Възможно е използването на 64-битов ilasm да ви позволи да надхвърлите 4 GB. - person Johannes Rudolph; 22.03.2011
comment
@Johannes Rudolph: Имах 4GB RAM в системата, докато имах тези проблеми. Все още използвам x64 ILASM от .net 2 и работи добре. - person Marc; 23.03.2011
comment
Здравей, Марк, благодаря, че ми върна тази информация. Всъщност може да сте достигнали прага по-рано (например при 3,2 GB), но благодаря, че уведомихте всички какво работи за вас! - person Johannes Rudolph; 23.03.2011
comment
Отворих командния ред на Visual Studio 2008 в режим на администратор. Все още нямам инсталиран .NET 4.0 на машината си. Тази команда не работи ли в .NET 3.5? Продължавам да получавам тази грешка.... Dis-assemble: ildasm myTest.dll /out:myTest.il › Re-assemble: ilasm myTest.il /res:myTest.res /dll /key:myTest.snk /out:myTestSN .dll › Грешка: „ilasm“ не се разпознава като вътрешна или външна команда, - person MacGyver; 22.07.2011
comment
@Г-н. MacGyver: ilasm.exe трябва да е в папката C:\Windows\Microsoft.NET\Framework\v2.0.50727 (това е версията .net 2.0 x86). - person Marc; 25.07.2011