2016-08-31 18 views
13

Tôi không thể nhận được ứng dụng bị làm mờ của tôi chạy trên đơn. Unobfuscated hoạt động trên mono. Khi tôi sử dụng khuôn khổ .net trên win7 nó bắt đầu mà không có vấn đề trong cả hai biến thể.ConfuserEx: System.TypeInitializationException trên Mono

Đây là ngoại lệ tôi nhận được:

Unhandled Exception: System.TypeInitializationException: Loại initializer cho '< Module>' ném một ngoại lệ. ---> System.NullReferenceException: Tham chiếu đối tượng không được đặt thành một thể hiện của đối tượng tại .â € ® â € â € â € â € â € â € ª â € Ž â 'â' â â € â € â € â € â € â € â € â € â € â € â â € â € â € â € â € â € ⠪⠀ ®() < 0x40884310 + 0x00874> tại: 0 tại ..cctor() < 0x40884100 + 0x00017> trong: 0 --- Kết thúc dấu vết ngăn xếp ngoại lệ bên trong --- tại Vintagestory.Server.Program.Main (System.String [] args) < 0x408814c0 + 0x002bb> trong: 0 [LRI] LOẠI TRỪ KHÓA NỘI DUNG BẤT HỢP: System.TypeInitializationException: Trình khởi tạo kiểu cho '' đã ném một ngoại lệ. ---> System.NullReferenceException: Tham chiếu đối tượng không được đặt thành một thể hiện của đối tượng tại .â € ® â € â € â € â € â € â € ª â € Ž â 'â' â â € â € â € â € â € â € â € â € â € â € â â € â € â € â € â € â € ⠪⠀ ®() < 0x40884310 + 0x00874> trong: 0 tại ..cctor() < 0x40884100 + 0x00017> trong: 0 --- End của nội ngoại lệ stack trace --- tại Vintagestory.Server.Program.Main (System.String [] args) < 0x408814c0 + 0x002bb> trong: 0

Trường hợp ngoại lệ có thể xảy ra tại một điểm khi nó phải load thêm mã itional từ một thư viện bên ngoài thats cũng obfuscated trong cùng một quá trình.

Làm cách nào để tôi có thể tiếp tục và gỡ lỗi/sửa lỗi này?

Cập nhật: Có vẻ cũng xảy ra trên Windows Mono

Update2: Đây cũng là một mục vấn đề github của lỗi này với một số chi tiết hơn: https://github.com/yck1509/ConfuserEx/issues/535

+0

Tôi chưa sử dụng ConfuserEx hoặc mono - có thể họ sử dụng thứ gì đó không được hỗ trợ trên linux - Tôi đoán đây là hàm tạo ném ngoại lệ, nhưng không có mã nào bạn chụp ảnh hiển thị mọi thứ có thể ném một NullReferenceException. Tôi không nghĩ rằng bạn có một cách đơn giản để gỡ lỗi vì điều này về cơ bản là điểm gây xáo trộn, vì vậy bạn có thể phải đào sâu và hiểu mã. Có thể dán toàn bộ mã của hàm tạo và tôi có thể thử và giúp bạn. – gilmishal

+0

Cảm ơn bạn đã phản hồi của bạn, tôi đã thêm một pastebin vào toàn bộ mã nguồn. Một điều nữa tôi có thể thử là vô hiệu hóa sự bảo vệ cá nhân và xem nguyên nhân nào. – Tyron

+0

Dường như một trường hợp gỡ lỗi cổ điển 'Trace.WriteLine' sẽ giúp ích. In các thông điệp gỡ lỗi sau mỗi câu lệnh khởi tạo tĩnh để thu hẹp vị trí của vấn đề (cũng di chuyển bất kỳ khởi tạo các trường tĩnh nào thành bộ khởi tạo tĩnh). –

Trả lời

8

tôi đã sử dụng Obfuscation Cấp tối đa cho một đơn C# Lớp thậm chí không được sử dụng mà là một phần của một thư viện bên ngoài được yêu cầu, điều đó dường như là vấn đề.

Khi tôi giảm mức độ làm xáo trộn xuống thành "Linh hoạt", nó hoạt động. Không lý tưởng nhưng sẽ làm ngay bây giờ.