2013-07-23 28 views
7

Đơn giản như tiêu đề thực sự. Tôi đã nâng cấp một giải pháp từ .Net 2-3.5 lên .Net 4, nó hoạt động tốt, sau đó tôi đã cài đặt VS 2012 và với nó .Net 4.5 và bây giờ tôi nhận được một ExecutionEngineException khi cố gắng phản ánh CustomAttributes từ một DLL tự động tạo ra bằng cách sử dụng đoạn mã sau:Tại sao tôi nhận được ExecutionEngineException trên .Net 4.0 Assembly.GetCustomAttributes sau khi cài đặt VS2012/.Net 4.5?

Assembly assembly = Assembly.LoadWithPartialName("DavesNamespace.Custom"); 
var attributes = assembly.GetCustomAttributes(typeof(ChecksumAttribute), true); 

tôi nhận được ngoại lệ có hoặc không có các loại quy định cho GetCustomAttributes, nhưng nó chỉ vào thời điểm đó mà nó ném ngoại lệ, lắp ráp được nạp thành công và tôi có thể thực sự xem bộ sưu tập CustomAttributes nếu tôi dán điểm ngắt.

Phiên bản gốc .Net 2-3.5 vẫn hoạt động kể từ khi cài đặt vs2012.

Bất kỳ trợ giúp nào được đánh giá cao, tôi đã tìm thấy một số vấn đề bắt nguồn từ kết thúc năm 2012 với ExecutionEngineExceptions đang tìm kiếm trực tuyến nhưng không có câu trả lời nào. Sự cố có thể được giải quyết bằng cách xóa VS2012 và .Net 4.5, nhưng khi chúng tôi dự định chuyển sang công ty VS2013 khi phát hành không thực sự là giải pháp.

EDIT: đã có lỗi xảy ra trong một ứng dụng mẫu mà không chỉ này, và ngoại trừ vẫn ném ngay cả khi ứng dụng được xây dựng nhắm mục tiêu 4,5

Stack trace thêm trong các ý kiến ​​dưới đây (Đó là null)

+1

Bạn có thể đăng ngoại lệ và stacktrace không? – jessehouwing

+4

@mckjerral Tôi đến từ nhóm tương thích .NET Framework. Tôi muốn xem xét vấn đề này. Bạn có thể liên hệ với tôi tại netfx45compat tại Microsoft dot com không? Nếu bạn có mã để tái tạo vấn đề, điều đó cũng sẽ tuyệt vời. Cảm ơn, Varun – Varun

+0

@jessehouwing '{" Ngoại lệ loại 'System.ExecutionEngineException' đã bị ném. "} HRESULT -2146233082 StackTrace null' Không có nhiều trợ giúp để tìm thấy ở đó! – mckjerral

Trả lời

1

Tôi đã giải quyết vấn đề cho trường hợp cụ thể của chúng tôi, mặc dù tôi nghĩ rằng gốc là một thay đổi không có giấy tờ trong cách .Net 4.5 đọc CustomAttributes trên DLL.

Các giải pháp đã được di chuyển một CustomAttributeBuilder được thiết lập từ là điều cuối cùng trước khi AssemblyBuilder.Save() [Sau khi tất cả các nội dung của hội đồng đã được dân cư] đến thing after AppDomain.CurrentDomain.DefineDynamicAssembly() đầu tiên [Trước khi bất kỳ nội dung đã được dân cư]

Mã thực tế mà ngoại lệ đã được ném không cần thiết để thay đổi, mặc dù tôi đã được cấu trúc lại để sử dụng thay thế cho LoadWithPartialName() chỉ là Load(), cách này vẫn hoạt động với LoadWithPartialName().

Có thể thêm thuộc tính tùy chỉnh sau khi nội dung của hội đồng đặt thuộc tính tùy chỉnh vào địa điểm sai? Nhưng vấn đề được đăng nhập với MS để xem xét.

Các vấn đề liên quan