2016-08-31 4 views
13

Я не могу заставить мое запутанное приложение работать на моно. Непрофессиональные работы на моно. Когда я использую структуру .net на win7, он запускается без проблем в обоих вариантах.ConfuserEx: System.TypeInitializationException on Mono

Это исключение, которое я получаю:

Необработанное исключение: System.TypeInitializationException: Тип инициализатор '< модуль>' бросил исключение. ---> System.NullReferenceException: ссылка на объект не установлена ​​в экземпляр объекта по адресу .â € ™ € ™ € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € " â € «Ä € œa € <â € Ä € â« â¯â¬â € â € â «â € œa € ®ââ« â € â € ªâ € «Â € ¬a €« â € ªâ € ªâ € ®() < 0x40884310 + 0x00874> в: 0 в ..cctor() < 0x40884100 + 0x00017> в: 0 --- Конец внутренней трассировки стека исключений --- в Vintagestory.Server.Program.Main (System.String [] args) < 0x408814c0 + 0x002bb> in: 0 [ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: Инициализатор типа для '' выбрал исключение. ---> System.NullReferenceException: ссылка на объект не установлена ​​в экземпляр объекта по адресу .â € ™ € ™ € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € â € " â € «Ä € œa € <â € Ä € â« â¯â¬â € â € â «â € œa € ®ââ« â € â € ªâ € «Â € ¬a €« â € ªâ € ªâ € ®() < 0x40884310 + 0x00874> в: 0 в ..cctor() < 0x40884100 + 0x00017> в: 0 --- Конец внутренней трассировки стека исключений --- в Vintagestory.Server.Program.Main (System.String [] арг) < 0x408814c0 + 0x002bb> в: 0

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

Как я могу пойти и отладить/исправить это?

Update: Кажется, что также случается на Windows, Mono

UPDATE2: Здесь также запись вопрос GitHub жука с некоторыми более подробно: https://github.com/yck1509/ConfuserEx/issues/535

+0

Я не использовал ConfuserEx или mono - может быть, они используют что-то, что просто не поддерживается в linux - Я предполагаю, что это конструктор, который генерирует исключение, но ни один из кода, который вы снимали, не показывает ничего, что может исключение NullReferenceException. Я не думаю, что у вас есть простой способ отладки, так как это в основном точка обфускации, поэтому вам, вероятно, придется вникать и понять код. Возможно, вставьте весь код конструктора, и я мог бы попробовать и помочь вам. – gilmishal

+0

Спасибо за ваш ответ, я добавил пастебин ко всему исходному коду. Еще одна вещь, которую я мог бы попробовать, - отключить индивидуальную защиту и посмотреть, какие причины. – Tyron

+0

Похоже на случай, когда классическая отладка 'Trace.WriteLine' поможет. Печатать сообщения отладки после каждого утверждения статического инициализатора, чтобы сузить место возникновения проблемы (также переместить любую инициализацию статических полей в статический инициализатор). –

ответ

8

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

Когда я уменьшаю уровень обфускации до «Агрессивного», он работает. Не идеальный, но сейчас это будет делать.