Słyszałem wcześniej, że roszczenie .Net 3.5 nie wprowadziło zmian w IL, do którego się kompiluje. Po przemyśleniu wszystkich funkcji kompilatora, które znam, zostały wprowadzone, w rzeczywistości wydaje się, że wszystkie mogą być wdrożone w tym samym starym IL, ale nie mogę znaleźć oficjalnego źródła do potwierdzenia tego twierdzenia. Czy to prawda?Czy .Net IL zmieniło się w ogóle od .Net 2.0?
Odpowiedz
myślę, że nie było żadnych zmian, takich jak IL, ale mieć nastąpiły znaczące zmiany w realizacji CLR, aby metody dynamiczne bardziej efektywne, pozwalające na wyrażenie drzewo kompilacji itd wydaje mi się, nastąpiły zmiany w zakresie bezpieczeństwa budowania dynamicznych metod, aby umożliwić wykonywanie wyrażeń lambda generujących drzewa wyrażeń, aby wywoływały prywatne metody pracy nawet w relatywnie niskich środowiskach zaufania. Kompilator wie, że można wywołać metodę prywatną, ponieważ punkt, w którym skompilowany jest kod źródłowy, ma do niej dostęp. Udowodnienie, że to jest trudne :) Zobacz this note by Eric Lippert.
IL nie uległa zmianie, ale kompilator będzie miał. Zauważyliśmy na przykład, że wewnętrzne narzędzia w WCF tworzą całkiem różne C# dla serwerów proxy i tym podobnych, które z kolei tworzą różne IL po skompilowaniu. Zobacz także omówienie "czerwonych bitów" i "zielonych bitów" w wpisie dziennika Soma http://blogs.msdn.com/somasegar/archive/2006/05/18/601354.aspx. –
Wysyłka CLR (wersja 2.0.50727) nie zmieniła się od .NET 2.0, więc twoja IL jest identyczna. (Patrz również this SO QA)
Nie, sam CLR * został * zmieniony - wydaje mi się, że część .NET 2.0 SP1 była zmianą CLR. –
Było kilka wydań wersji 2.0.50727 CLR od czasu wydania platformy .NET w wersji 2.0. Oryginalne wydanie RTM było np. Wersja 2.0.50727.42. Na moim komputerze (Vista SP2) pełna wersja to Wersja 2.0.50727.4016. Jednak od czasu pierwszej wersji AFAIK nie było żadnych zmian funkcjonalnych. –
..i wyniku, jeśli chcesz, możesz korzystać z wielu funkcji .NET 3.5 w .NET 2.0 projektu, tak długo, jak korzystać z najnowszych kompilator:
- właściwości automatyczne
- metody rozszerzeń (wymaga trochę brudna sztuczka tho)
- inicjalizatory obiektu
- Rodzaj wnioskowanie (var kluczowe)
- Lambda wyrażeń
- 1. Czy środowisko P/Invoke zmieniło się w .NET 4.0?
- 2. Czy .Net Core generuje taką samą IL jako standardową .Net?
- 3. Dlaczego zachowanie BeforeFieldInit zmieniło się w .NET 4?
- 4. Aktualizacja projektu .Net 2.0 do .Net 4.0
- 5. LINQ w środowisku .NET 2.0 Runtime
- 6. SAML z .NET 2.0
- 7. Jak działa dyrektywa .NET IL .maxstack?
- 8. .net 2.0 składnik IRC
- 9. Zespoły .NET 2.0 mogą działać w środowisku .NET 4.0?
- 10. Jak obsługiwać .NET 2.0 i .NET 4.0 w jednej aplikacji?
- 11. Kompleks .Net 2.0 Formanty Windows Forms: od czego zacząć?
- 12. Wyjątek String.Format po aktualizacji z .Net 2.0 do .Net 4.5.2
- 13. Konwersja bibliotek klasy .NET Core 2.0 do .NET Standard
- 14. Szyfrowanie AES 256 w .NET Framework 2.0
- 15. Pobierz AST z zestawu .Net bez kodu źródłowego (kod IL)
- 16. Złap MongoAuthenticationException w Mongo Sterownik .NET 2.0
- 17. Maksymalna długość kwerendy na asp .net 2.0
- 18. Visual Studio 2012 Express i .NET 2.0
- 19. Usługi IIS 7.5 i ASP .NET 2.0
- 20. . Narzędzie do konfiguracji .Net Framework 2.0
- 21. XPath i XSLT 2.0 dla .NET?
- 22. .NET 2.0: File.AppendAllText (...) - wątek bezpiecznego wdrożenia
- 23. Powershell 2.0 Remoting ładowanie .Net 4.0 dll
- 24. Niezawodne biblioteki HTTP dla wdrażania .NET 2.0
- 25. Kompatybilność wsteczna .NET Compact 3.5 i 2.0
- 26. Czy .net 4.5 działa obok .net 4.0?
- 27. aws lambda przy użyciu .net core 2.0
- 28. Entity Framework Core 2.0 na .NET 4.6.1
- 29. Czy możesz użyć biblioteki .net 3.5 DLL z witryną .net 2.0?
- 30. Jak zrobić .net HttpClient używać http 2.0?
dlaczego pytasz? –
Dlaczego pytasz, dlaczego pytam? – sblom
Pytanie uzupełniające: Wiem, że 4.0 zdecydowanie ma nowy CLR, ale czy ma jakieś zmiany IL? –