2016-08-31 25 views
13

Nie mogę uruchomić mojej zaciemnionej aplikacji działającej na mono. Niefracowane działa na mono. Kiedy używam platformy .net na win7, rozpoczyna się ona bez problemu w obu wariantach.ConfuserEx: System.TypeInitializationException on Mono

Jest to wyjątek uzyskać:

Unhandled Wyjątek: System.TypeInitializationException: Typ inicjator dla '< Module>' zwrócił wyjątek. ---> System.NullReferenceException: Odwołanie do obiektu nie jest ustawione na instancję obiektu w .â € Žâ € Žâ € € Žâ € ™ Žâªâ¯â € ť â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € ªâ € ®() < 0x40884310 + 0x00874> w: 0 w .cctor() < 0x40884100 + 0x00017> w: 0 --- Koniec śledzenia stosu wyjątku wewnętrznego --- w Vintagestory.Server.Program.Main (System.String [] args) < 0x408814c0 + 0x002bb> in: 0 [ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: Inicjator typu dla '' wyrzucił wyjątek. ---> System.NullReferenceException: Odwołanie do obiektu nie jest ustawione na instancję obiektu w .â € Žâ € Žâ € € Žâ € ™ Žâªâ¯â € ť â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € <â € ªâ € ®() < 0x40884310 + 0x00874> w 0 w ..cctor (0x40884100) < + 0x00017> w 0 --- Koniec wewnętrznej śledzenia wyjątku stosu --- w Vintagestory.Server.Program.Main (System.String [] arg) < 0x408814c0 + 0x002bb> w 0

wyjątkiem zdarza się w momencie, gdy ma ona na obciążenie dodawać kod źródłowy z zewnętrznej biblioteki, która również jest zaciemniana w tym samym procesie.

Jak mogę nawet przejść i debugować/naprawić to?

Aktualizacja: Wydaje się również zdarzyć na Windows Mono

Update2: Tu jest też wejście problem github z buga z jakimś bardziej szczegółowo: https://github.com/yck1509/ConfuserEx/issues/535

+0

Nie użyłem ConfuserEx lub mono - może używają czegoś, co nie jest obsługiwane w Linuksie - Domyślam się, że jest to konstruktor, który zgłasza wyjątek, ale żaden z kodu, który zrobiłeś, nie pokazuje niczego, co może rzucić wyjątek NullReferenceException. Nie sądzę, że masz prosty sposób debugowania go, ponieważ jest to w zasadzie punkt zaciemniania, więc prawdopodobnie będziesz musiał zagłębić się i zrozumieć kod. Może wkleić cały kod konstruktora, a ja mógłbym ci pomóc. – gilmishal

+0

Dziękuję za odpowiedź, dodałem pastebin do całego kodu źródłowego. Jeszcze jedno, co mógłbym spróbować, to wyłączyć indywidualne zabezpieczenia i zobaczyć, jakie są przyczyny. – Tyron

+0

Wygląda to na przypadek, w którym mogłoby pomóc klasyczne debugowanie "Trace.WriteLine". Wydrukuj komunikaty debugowania po każdej instrukcji statycznego inicjalizatora, aby zawęzić lokalizację problemu (przenieś także inicjalizację pól statycznych do inicjalizatora statycznego). –

Odpowiedz

8

użyłem Maksymalna zaciemniania poziomie przez pojedynczy C# klasy to nawet nie było używane, ale część zewnętrznej biblioteki, która była wymagana, co wydawało się problemem.

Po zmniejszeniu poziomu zaciemnienia do poziomu "Agresywny" działa. Nie idealny, ale na razie zrobi.