2012-03-29 9 views
5

Jeśli mam bibliotekę skompilowaną w .NET 4 i odwołuję się do niej z pliku wykonywalnego .net 4.5, której wersji ramek będą operować operacje zdefiniowane w bibliotece na wykonanie?Której wersji frameworka .net biblioteka będzie działała w

Mam aplikację cli, która jest wbudowana w .net 4.5 i odnosi się zarówno do projektów .net 4, jak i .net 4.5 i zastanawiam się, czy obie będą używać tej samej wersji komponentów ADO.net.

Odpowiedz

5

Oba będą działać w tym samym CLR (w tym przypadku 4,5).

Z .NET < = 3.5, możesz mieć przypadki, w których zostanie załadowanych wiele wersji tego samego zestawu (tak, może się zdarzyć, że ADO.NET załaduje wersję 4.0, a także załaduje 4.5 w tej samej domenie aplikacji). O ile mi wiadomo, wyeliminowali to z CLR 4.0 (lub przynajmniej sprawili, że stało się to mniej).

Edycja: BTW - istnieje różnica między CLR (środowiskiem wykonującym twój kod) a wersjami ładowanych zestawów.

Wersja CLR reguluje możliwości procesu - co może zrobić, jakie wersje złożeń może załadować. Na przykład ,, CLR 4.5 może ładować prawie wszystkie zespoły (1.0 -> 4.5). Wszystkie będą działały pod 4.5 CLR. Ponadto nie można uruchamiać dwóch wersji CLR z tego samego pasma kompatybilnego w tym samym procesie. CLR 4.5 i 4.0 oba są uznawane za to samo pasmo zsynchronizowane, więc jeden lub drugi będzie ładowany. CLR 1.0, 1.1, 2.0, 3.0 i 3.5 są rozpatrywane w tym samym zakresie zgodności, więc tylko jeden z nich może się wczytać. Możesz jednak załadować CLR 3.5 i CLR 4.5 w tym samym czasie.

+0

Pomyślałem, że jeśli odwołasz się do zestawu, który kieruje do innej struktury, masz błędy kompilacji. –

+1

Tylko jeśli istnieje przerwa binarna (które są nieliczne i niejednoznaczne) lub jeśli próbujesz odwołać się do zespołu kierującego na bardziej zaawansowaną wersję CLR (tak, zespół 2.0 odwołujący się do zestawu 4.0 się zepsuje, przeciwnie tak nie będzie) –

+0

myślę, że złamie się również, jeśli określisz inną wersję zestawu. Na przykład masz kompilację złożoną w wersji 4.0 i określoną w pliku web.config (lub gdziekolwiek jest ona ładowana) 3.5 – Thea