2012-09-27 25 views
12

Giả sử hệ thống đã cài đặt .NET 4.0 và .NET 4.5.Đang tải một hội đồng được nhắm mục tiêu cho .NET 4.5 trên miền ứng dụng .NET 4.0

Có thể tải và làm việc với một phiên bản .NET 4.5 từ một assembly được nhắm mục tiêu .NET 4.0 không?

Đơn giản chỉ cần đặt, tôi có thể gọi Assembly.Load từ mã .NET 4.0 để tải một hội nhập nhắm mục tiêu .NET 4.5 không?

+2

Bạn sẽ muốn đọc điều này: http://marcgravell.blogspot.nl/2012/09/iterator-blocks-missing-methods-and-net.html quá !! – sehe

+0

tại sao không điều chỉnh cài đặt xây dựng trên các dự án khác của bạn để sử dụng .NET4.5? –

+1

@ShaunWilde Đôi khi điều đó là không thể. Bạn có thể có nhiều nhóm hoặc ứng dụng tại một công ty, một nhóm có .NET 4.5, một trong đó sử dụng .NET 4.0. Trong một thế giới lý tưởng, điều này không xảy ra, nhưng trong thế giới thực, nó thường xảy ra. Đôi khi bạn cần phải interoperate các thành phần giữa hai. – Nuzzolilo

Trả lời

11

Giả sử một hệ thống như .NET 4.0 và .NET 4.5:

Như đã nêu trong marcgravell's blog liên kết bởi sehe

4,5 là một tại chỗ over-the-top cài đặt trên đầu trang của 4.0, trong GAC; một khi bạn đã cài đặt 4.5, 4.0 chạy với 4.5 hội đồng

Sau đó gọi Assembly.Load từ mã .NET nhắm mục tiêu 4.0 (biên dịch bởi trình biên dịch 4.0), sẽ thực sự chạy trong việc triển khai khung 4.5, vì vậy tôi không thấy bất kỳ lý do nào tại sao nó không thể tải một bản lắp ráp 4.5.

margravell lưu ý rằng sự cố xảy ra khi bạn cố gắng chạy .NET 4.5 được biên dịch mã trên hệ thống chỉ có 4.0 được cài đặt, vì việc triển khai trình quay vòng/ngắt kết quả lợi nhuận bị thiếu tham chiếu phương thức. Nhưng điều này không ảnh hưởng đến bạn.

+4

làm thế nào đến nó không hoạt động theo mặc định? - Bạn phải làm gì thêm để làm cho nó hoạt động? – BrainSlugs83

+0

Rõ ràng .net-4.5 cố gắng hoạt động như .net-4.0 trong một số trường hợp khi quá trình này được thực hiện. Ví dụ, 'System.ComponentModel.Composition' từ chối đóng các kiểu generic mở khi được nạp bởi một assembly .net-4.5 được nạp bởi một chương trình được khởi tạo là .net-4.0. Điều này bit tôi vì tôi đã không nhận ra rằng khuôn khổ đang chạy trong chế độ net-4.0 và tôi không thể đoán rằng điều này có thể là nguyên nhân của hành vi khác nhau. – binki

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