2012-05-24 5 views
34

Jestem zainteresowany instalacją .NET 4.5.Czy .net 4.5 działa obok .net 4.0?

Ale słyszałem, że jest to uaktualnienie na miejscu.

Ponieważ użytkownicy w mojej firmie używają systemu Windows XP. I can't release any client side apps that use .NET 4.5.

Wiem, że mogę celować w .net 4.0, kiedy koduję, ale jeśli zainstaluję .net 4.5, czy istnieje ryzyko, że rzeczy działające na moim komputerze nie będą działały na komputerze z systemem Windows XP (który ma tylko .net 4.0)?

(Nawiasem mówiąc, szukałem, ale nie patrz na to pytanie hasła. Jeżeli został poproszony, proszę wskazać mi do niego i będę się starał, aby usunąć ten.)

+1

4.5 Mylą mnie bardziej niż inne z WindRT w miksie. – Paparazzi

+1

Nie instaluj wersji beta na maszynie produkcyjnej. Nigdy nie miałem tak wielkiego problemu. Użyj maszyny wirtualnej, jeśli chcesz z nią grać. –

Odpowiedz

23

Tak, istnieje ryzyko rodzaj, który opisujesz. Interfejs .NET 4.0 pozostaje niezmieniony, więc jeśli wybierzesz system .NET 4.0, Twój program skompiluje się i uruchomi na XP z .NET 4.0, ale implementacja .NET 4.5 .NET 4.0 zawiera również poprawki błędów. Jeśli polegasz na systemie .NET Framework, który nie jest błędny, a jedyny dostępny .NET Framework for XP jest błędny, Twój program będzie doświadczał tych błędów. Miałem to do czynienia z Entity Framework, ale mogły też istnieć inne poprawki błędów.

+10

Więc w zasadzie VS 11 "zainfekuje" moją maszynę? Będę teraz ślepy na wszelkie poprawki, których nie będą mieli moi użytkownicy? To jest HORRIBLE. Jeśli widzę błędy, mogę je obejść. Jeśli nawet ich nie widzę, to po prostu sprawia, że ​​wyglądam jak zły programista. – Vaccano

+4

@Vaccano W uczciwości dotyczy to również zwykłych aktualizacji systemu Windows i użytkowników, którzy je wyłączają. – hvd

+0

Ale aktualizacja systemu Windows nie zawiera lat rozwoju rozwiązań. Są to zwykle poprawki bezpieczeństwa. Lub drobne poprawki. I użytkownik ma możliwość wyłączenia go (lub w mojej firmie, nie mogą tego kontrolować). – Vaccano

1

Zaakceptowanych odpowiedź jest bardzo istotne, ale dodam Przykładem sytuacji, w której cel 4,0 skompilowany na maszynie 4.5+ jest czymś mniej użyteczne niż 4,0 z naprawionych błędów.

Jeśli masz jakieś ComReference w swoich projektach, wywołają tlbimp.exe z .NET 4.5 na komputerze kompilacji. Może to spowodować, że twoje oprogramowanie będzie zawierało opakowania, które odwołują się na przykład do metody System.Reflection.MethodInfo.CreateDelegate(System.Type), która istnieje tylko w .NET 4.5. Otrzymasz MissingMethodException na komputerze WinXP.

Stało się tak podczas pracy z przestrzenią nazw ComAdmin, które są obiektami COM dla dostępu do katalogu COM +, ale podejrzewam, że problem może być szerszy.