2011-09-06 27 views
6

Đây là một điều thú vị. Tôi có một tệp thực thi nhỏ được xây dựng dựa trên .NET 2.0, để đảm bảo nó hoạt động trên nhiều nền tảng khác nhau. Nó là một chương trình một assembly và nó chỉ tham chiếu đến System. * Namespaces.Làm thế nào để hỗ trợ .NET 2.0 và .NET 4.0 trong một ứng dụng?

Khi tôi chạy nó trên một hệ điều hành với cài đặt .NET 2.0, nó chạy tốt. Nó sẽ không chạy trên một hệ điều hành với chỉ .NET 4.0 được cài đặt, vì thời gian chạy mới được giới thiệu với .NET 4.0. Kết quả là, tôi đã thêm thông tin thời gian chạy được hỗ trợ vào tệp app.config, như được mô tả here. Tôi bổ sung thêm hai runtimes hỗ trợ:

<supportedRuntime version="2.0.50727" /> 
<supportedRuntime version="4.0" /> 

Bây giờ khi tôi chạy các ứng dụng trên một hệ thống với .NET 2.0 được cài đặt, nó không chạy:

enter image description here

Nó làm cho có sự khác biệt trong đó thứ tự các thời gian chạy được hỗ trợ được xác định, khác với thứ tự của các phiên bản được yêu cầu trong thông báo lỗi thay đổi để phản ánh những thay đổi đối với app.config (vì vậy CLR rõ ràng là chọn đúng thông tin đó). Tôi đã cài đặt .NET 2.0 và tuyên bố rằng tôi cần cài đặt .NET 2.0! Tôi đã thử sửa chữa cài đặt .NET 2.0 mà không có may mắn. Tôi đã sao chép hành vi này trên một máy thứ hai.

Điều gì có thể gây ra lỗi này?

Trả lời

11

Tôi tin rằng bạn có thể chỉ đã bỏ lỡ các v:

<supportedRuntime version="v2.0.50727" /> 
<supportedRuntime version="v4.0" /> 
Các vấn đề liên quan