2009-04-01 38 views
6

Tôi có một số DLL rằng nó sẽ dễ dàng hơn nhiều để sử dụng .net 3.5 nội bộ (để tận dụng lợi thế của LINQ, vv). Tôi muốn sử dụng các DLL với các trang web asp.net hiện đang chạy asp.net 2.0.Bạn có thể sử dụng .net 3.5 DLL với trang web .net 2.0 không?

Kịch bản này có thể xảy ra không? Có bất kỳ hạn chế hoặc gotchas nào (ví dụ: asp.net không thực hiện bất kỳ cuộc gọi nào đến các phương thức trả về .net 3.5 đối tượng như IQueryable) không?

Lưu ý: Tất nhiên, .net 3.5 sẽ được cài đặt trên máy chủ.

Trả lời

5

Để mở rộng những gì foosnazzy đã nói, .NET 3.5 (SP1) chỉ là .NET 2.0 SP2 với một số cụm mới. Lý do duy nhất không cài đặt nó trên trang web sẽ là nếu trang web sẽ không chạy với .NET 2.0 SP2.

Điều này rất khác so với cách mà nó từng sử dụng - cài đặt .NET 1.1 trên trang web .NET 1.0 Tôi chịu trách nhiệm phá trang web, mặc dù trang web không sử dụng 1.1 - Tôi đã cài đặt 1.1 vì vậy tôi có thể sử dụng một công cụ cụ thể. Việc nâng cấp từ .NET 1.1 lên .NET 2.0 là một cơn ác mộng tồi tệ hơn.

Nhưng Microsoft đã học được điều này. Các phiên bản .NET từ 2.0 .NET 3.5 SP1 đều sử dụng .NET Language Common Runtime (CLR). Trong thực tế, những người đã cài đặt 3.5 thường ngạc nhiên khi nhìn vào các thiết lập IIS và thấy rằng các trang web của họ vẫn hiển thị như đang chạy .NET 2.0. Nhưng đó chính xác là .NET 2.0, chỉ với hai gói dịch vụ được áp dụng. Bất kỳ trang web nào không sử dụng các hội đồng mới không thể bị ảnh hưởng gì cả (ngoài những gì một gói dịch vụ có thể làm).

Để tiếp tục nhắc lại những gì đã được nói - các tính năng C# 3.0 là độc lập của Khung. Ví dụ, bạn có thể sử dụng các kiểu nặc danh và lambdas trong mã .NET 2.0 thuần túy. Những gì bạn không thể làm là sử dụng LINQ, vì yêu cầu các hội đồng mới trong .NET 3.5.

3

Bạn có thể sử dụng nhiều tính năng của C# 3 trong .net 2.0, nhưng LINQ không phải là một trong số chúng. Bạn phải bao gồm các Linq DLL, mà bạn không được phép phân phối một cách riêng biệt và phải cài đặt thời gian chạy 3,5 đầy đủ.

LƯU Ý: Nếu .net 3.5 được cài đặt, tôi nghĩ bạn sẽ gặp sự cố nếu trang web không được định cấu hình để bao gồm các hội đồng từ 3.5. Nó có thể làm việc trong một dự án ứng dụng Web (trái với dự án biểu mẫu Web) vì dll được biên dịch trước và có thể bao gồm các tham chiếu cần thiết trong các tệp PE, nhưng tôi không chắc chắn.

+0

Vì vậy, nếu tôi cài đặt 3.5 dll và chỉ gọi 2.0 các phương thức tương thích, nó sẽ hoạt động? – Keltex

2

3.5 thêm vào khuôn khổ 2.0, mọi thứ đều hoàn toàn tương thích ngược.

+0

Nhưng nếu không cài đặt 3.5 thì bạn không thể sử dụng 3,5 tính năng. Ví dụ: .net 3.5 sẽ không cài đặt trên Windows 2000, nhưng .net 2.0 sẽ. Vì vậy, nó không hoàn toàn tương thích ngược. –

2

Luôn có LinqBridge, cho phép bạn sử dụng LINQ to Objects trong môi trường .Net 2.0. Tuy nhiên có một số cảnh báo xung quanh việc sử dụng nó với ASP.Net, tùy thuộc vào việc bạn có sử dụng các dự án ASP.NET Web Application hay ASP.NET Web Site hay không. Xem this page để biết thêm thông tin.

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