2009-04-01 17 views
6

Mam kilka bibliotek DLL, że byłoby znacznie łatwiej używać .net 3.5 wewnętrznie (aby skorzystać z Linq, itp.). Chcę używać tych bibliotek DLL w witrynach asp.net, które obecnie korzystają z asp.net 2.0.Czy możesz użyć biblioteki .net 3.5 DLL z witryną .net 2.0?

Czy ten scenariusz jest możliwy? Czy są jakieś ograniczenia lub pułapki (np. Asp.net nie wywołuje żadnych metod, które zwracają obiekty .net 3.5, takie jak IQueryable)?

Uwaga: Oczywiście .net 3.5 zostanie zainstalowany na serwerze.

Odpowiedz

5

Aby rozwinąć to, co powiedział foosnazzy, .NET 3.5 (SP1) to tylko .NET 2.0 SP2 z kilkoma nowymi złożeniami. Jedynym powodem, aby nie instalować go na stronie internetowej byłoby, gdyby strona internetowa nie działała z .NET 2.0 SP2.

To bardzo różni się od dotychczasowego - instalacja .NET 1.1 na stronie internetowej .NET 1.0 Byłem odpowiedzialny za zerwanie strony internetowej, mimo że strona internetowa nie korzystała z wersji 1.1 - Zainstalowałem 1.1, więc mogłem użyć konkretnego narzędzia. Aktualizacja z .NET 1.1 do .NET 2.0 była jeszcze gorszym koszmarem.

Ale Microsoft nauczył się z tego. Wersje .NET z wersji 2.0 .NET 3.5 SP1 używają wspólnego środowiska wykonawczego języka .NET 2.0 (CLR). W rzeczywistości osoby, które zainstalowały 3.5, często są zaskoczone, gdy patrzą na ustawienia IIS i widzą, że ich witryny wciąż wyświetlają się jako działające .NET 2.0. Ale jest to dokładnie ten sam .NET 2.0, tylko z dwoma dodatkami Service Pack. Żadna strona, która nie używa nowych złożeń, nie może w ogóle ulec zmianie (poza tym, co może zrobić dodatek Service Pack).

Aby jeszcze raz podkreślić, co zostało powiedziane - funkcje C# 3.0 są niezależne od Framework. Na przykład możesz używać anonimowych typów i lambdas w czystym kodzie .NET 2.0. Nie można wykonać używać LINQ, ponieważ wymaga nowych złożeń w .NET 3.5.

3

Możesz używać wielu funkcji C# 3 w .net 2.0, ale Linq nie jest jednym z nich. Musisz dołączyć biblioteki Linq DLL, których nie możesz dystrybuować oddzielnie i musisz zainstalować pełne środowisko wykonawcze 3.5.

UWAGA: Jeśli zainstalowano .net 3.5, myślę, że będziesz mieć problemy, jeśli strona nie jest skonfigurowana do włączenia złożeń od wersji 3.5. Może działać w projekcie aplikacji sieciowej (w przeciwieństwie do projektu Web Forms), ponieważ biblioteki dll są skompilowane wcześniej i mogą zawierać niezbędne odniesienia w plikach PE, ale nie jestem pewien.

+0

Więc jeśli zainstaluję 3.5 dll i zadzwonię tylko 2.0 zgodne metody, to zadziała? – Keltex

2

3.5 dodaje do ramy 2.0, wszystko jest w pełni zgodne wstecz.

+0

Ale jeśli 3.5 nie jest zainstalowane, nie można korzystać z funkcji 3.5. Na przykład .net 3.5 nie będzie instalowany w Windows 2000, ale .net 2.0 będzie. Więc nie jest w pełni kompatybilny wstecz. –

2

Zawsze jest LinqBridge, który pozwala na używanie Linq To Objects w środowisku .Net 2.0. Jednak istnieją pewne zastrzeżenia dotyczące korzystania z niego w ASP.Net, w zależności od tego, czy korzystasz z aplikacji sieci Web ASP.NET, czy z witryn sieci Web ASP.NET. Aby uzyskać więcej informacji, patrz this page.

Powiązane problemy