2009-05-22 23 views
7

Cho phép nói rằng tôi có một ứng dụng cũ sẽ cố tải một assembly ngoài.Cách chạy ứng dụng CLR 2 như ứng dụng CLR 4

  • Các ứng dụng cũ được biên dịch để CLR 2.
  • Việc lắp ráp mới được biên dịch để CLR 4.

Tôi muốn để có thể chạy các ứng dụng cũ bên trong CLR 4. Tôi nhớ có một số tham gia xml manifest magic.

Làm cách nào để tạo tệp xml tệp kê khai đó để cho biết rằng oldapplication.exe sẽ chạy trong CLR 4?

Tôi đã tìm thấy một số đề xuất, nhưng chúng dường như không hoạt động đối với tôi.

oldapplication.exe.config:

<?xml version ="1.0"?> 
<configuration> 
<startup> 
     <!--set the appropriate .net version--> 
     <requiredRuntime version="4.0.0.0"/> 
</startup> 
</configuration> 

Trong khi đưa ra một shot tôi tìm thấy tập tin này để phục vụ như templ của tôi ăn:

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.20506 \ Aspnet_regsql.exe.config

<?xml version ="1.0"?> 
<configuration> 
    <startup> 
     <supportedRuntime version="v4.0.20506"/> 
     <requiredRuntime version="v4.0.20506" safemode="true"/> 
    </startup> 
</configuration> 

Tôi cũng cập nhật mã để báo cáo CLR hiện tại:

Console.WriteLine(typeof(object).Assembly.ImageRuntimeVersion); 

Nó hoạt động ngay bây giờ!

+1

+1. Chỉ cần hỏi điều này, vì tôi thực sự cần JIT 64 bit của .NET 4 để được hỗ trợ cuộc gọi đuôi thích hợp. – leppie

Trả lời

7

Bạn cần cung cấp số phiên bản phù hợp.Lưu ý rằng đây là phiên bản beta 1, nó sẽ thay đổi cho đến khi RTM lắng một:

<configuration> 
<startup> 
     <supportRuntime version="4.0.20506"/> 
</startup> 
</configuration> 
1

Tôi tin rằng bạn muốn sử dụng supportRuntime, không bắt buộcĐối với người lớn.

"Phần tử < được hỗ trợRuntime > nên được tất cả các ứng dụng được xây dựng sử dụng phiên bản 1.1 trở lên của thời gian chạy". (http://msdn.microsoft.com/en-us/library/a5dzwzc9.aspx). Đảm bảo chuỗi phiên bản khớp chính xác với "tên thư mục cài đặt" cho phiên bản bạn muốn.

1

Đối với folks tìm trang này qua Google trong 2013+

Config file Gist
https://gist.github.com/1223509

Bài đăng trên blog
http://yzorgsoft.blogspot.com/2011/09/greenshot-on-windows-8-net-45.html

<?xml version ="1.0"?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0.30319" /> 
    <requiredRuntime version="v4.0.30319" safemode="true"/> 
    </startup> 
    <runtime> 
    <relativeBindForResources enabled="true" /> 
    <UseSmallInternalThreadStacks enabled="true" /> 
    <DisableMSIPeek enabled="true"/> 
    </runtime> 
</configuration> 

Tệp cấu hình này được lấy từ Visual Studio 2012, do đó, nó có thêm một số tính năng tương thích COM và hiệu suất. Đối với các môi trường chạy mã được lưu trữ, có lẽ bạn nên xóa phần <runtime>.

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