Pytanie Jakie są poprawne numery wersji dla C #?


Jakie są poprawne numery wersji dla C #? Co wyszło kiedy? Dlaczego nie mogę znaleźć żadnych odpowiedzi na temat C # 3.5?

To pytanie służy przede wszystkim tym, którzy szukają odpowiedzi, używając nieprawidłowego numeru wersji, np. C # 3.5. Mamy nadzieję, że znajdzie się każdy, kto nie znajdzie odpowiedzi z niewłaściwym numerem wersji to pytanie, a następnie wyszukaj ponownie z odpowiednim numerem wersji.


2072


pochodzenie


Jest to jedno z dobrych źródeł do zrozumienia wszystkiego. en.wikipedia.org/wiki/C_Sharp_(programming_language)
Czy ten drugi akapit nie powinien znajdować się w komentarzu, a nie w pytaniu, ponieważ nie jest on częścią pytania - TankorSmash
@TankorSmash: Uważam, że jest to wystarczająco ważne, jak kontekst pytania, że ​​warto go zatrzymać tam, gdzie jest. IMO, oczywiście. - Jon Skeet
@TankorSmash, ponieważ jest to pytanie zadane samodzielnie, wydaje się właściwe, aby wyjaśnienie (akapit drugi) było w nim i nie zostało utracone w komentarzach. - YoungCoconutCode


Odpowiedzi:


C # historia wersji językowej:

To są wersje C # o których wiadomo w chwili pisania tego tekstu:

W odpowiedzi na pytanie PO:

Jakie są poprawne numery wersji dla C #? Co wyszło kiedy? Dlaczego nie mogę znaleźć odpowiedzi na temat C # 3.5?

Nie ma czegoś takiego jak C # 3.5 - przyczyną zamieszania jest to, że C # 3.0 jest obecny w .NET 3.5. Język i środowisko są jednak niezależnie wersjonowane - podobnie jak CLR, który jest w wersji 2.0 dla .NET 2.0 do 3.5, .NET 4 wprowadzając CLR 4.0, niezależnie od pakietów serwisowych. CLR w .NET 4.5 ma różne ulepszenia, ale wersja jest niejasna: w niektórych miejscach może być określana jako CLR 4.5 (ta strona MSDN kiedyś tak się nazywał, ale na przykład Environment.Version nieruchomość wciąż zgłasza 4.0.xxx.

Bardziej szczegółowe informacje na temat relacji między wersją językową, wykonawczą i ramową są dostępne na stronie C # in Depth teren. Obejmuje to informacje na temat funkcji programu C # 3.0, z których można korzystać podczas kierowania na platformę .NET 2.0. (Jeśli ktoś chce wprowadzić całą zawartość do tej odpowiedzi na wiki, może to zrobić.)

Od 3 maja 2017 r. Zespół językowy C # stworzył historię wersji C # i funkcji repozytorium github: Funkcje dodane w wersjach językowych C #. Jest również strona śledząca nadchodzące i ostatnio zaimplementowane funkcje językowe.


2402



@ cvraman: Właśnie otrzymałem e-mail od kogoś, kto zauważył, że strona została zmieniona i nie odnosi się do niej jako CLR 4.5. Czy zabawa wersjonująca nie jest przyjemna? :) - Jon Skeet
@ cvraman: Zostawię to na chwilę, jak mocno podejrzewam trochę miejsca nadal będą go określać jako 4.5, - Jon Skeet
Do każdego, kto zasugerował włączenie zbieżnych kolekcji: jest to lista język funkcje, nie struktura cechy. Zwróć uwagę na brak wspominania o WPF itp. - Jon Skeet
AFAIK, jedyna stabilna i niezawodna wersja dla C # nazywa się Jon Skeet ... reszta to po prostu liczby: D - Carls Jr.
@alper: Unity nie byłaby konkretną wersją C # tak bardzo jak konkretną wersją platformy .NET i / lub środowiska wykonawczego .NET. IIRC, to skutecznie na CLR v2, ale może mieć pewne aspekty .NET 3.5. - Jon Skeet


Największym problemem przy zajmowaniu się numerami wersji C # jest fakt, że nie jest on związany z wersją .NET Framework, która wydaje się być skutkiem zsynchronizowanych wydań między Visual Studio i .NET Framework.

Wersja C # jest faktycznie związana z kompilatorem, a nie z frameworkiem. Na przykład w Visual Studio 2008 możesz napisać C # 3.0 i docelowy .NET Framework 2.0, 3.0 i 3.5. Nomenklatura C # 3.0 opisuje wersję składni kodu i obsługiwanych funkcji w ten sam sposób, co ANSI C89, C90, C99 opisać składnię / funkcje kodu dla C.

Spojrzeć na Mono, a zobaczysz, że Mono 2.0 (najczęściej zaimplementowana wersja 2.0 systemu .NET Framework ze specyfikacji ECMA) obsługuje składnię C # 3.0 i funkcje.


241



Tak prawdziwe. Ale nie nazwałbym tego "problemem", a raczej "przewagą". Moja firma buduje aplikację 2.0, korzystając ze wszystkich niesamowitych funkcji C # 4.0 - uwielbiam to. - Alex
W skrócie, wersje C # są powiązane z kompilatorem, a nie ze strukturą .net. - SHEKHAR SHETE


Jest to to samo, co większość odpowiedzi tutaj, ale tabularized dla ułatwienia, i ma wersje Visual Studio i .NET dla kompletności.

╔════════════╦════════════╦══════════════╦═════════════╦══════════════╗
║ C# version ║ VS version ║ .NET version ║ CLR version ║ Release date ║
╠════════════╬════════════╬══════════════╬═════════════╬══════════════╣
║    1.0     ║    2002    ║    1.0       ║     1.0     ║   Feb 2002   ║
║    1.2     ║    2003    ║    1.1       ║     1.1     ║   Apr 2003   ║
║    2.0     ║    2005    ║    2.0       ║     2.0     ║   Nov 2005   ║
║            ║            ║    3.0       ║     2.0     ║   Nov 2006   ║
║    3.0     ║    2008    ║    3.5       ║     2.0     ║   Nov 2007   ║
║    4.0     ║    2010    ║    4.0       ║     4       ║   Apr 2010   ║
║    5.0     ║    2012    ║    4.5       ║     4       ║   Aug 2012   ║
║    5.0     ║    2013    ║    4.5.1     ║     4       ║   Oct 2013   ║
║            ║            ║    4.5.2     ║     4       ║   May 2014   ║
║    6.0     ║    2015    ║    4.6       ║     4       ║   Jul 2015   ║
║            ║            ║    4.6.1     ║     4       ║   Nov 2015   ║
║            ║            ║    4.6.2     ║     4       ║   Aug 2016   ║
║    7.0     ║    2017    ║              ║             ║   Mar 2017   ║
║            ║            ║    4.7       ║     4       ║   May 2017   ║
║    7.1     ║ 2017(v15.3)║              ║             ║   Aug 2017   ║
║            ║            ║    4.7.1     ║     4       ║   Oct 2017   ║
║    7.2     ║ 2017(v15.5)║              ║             ║   Dec 2017   ║
║            ║            ║    4.7.2     ║     4       ║   Apr 2018   ║
║    7.3     ║ 2017(v15.7)║              ║             ║   May 2018   ║
╚════════════╩════════════╩══════════════╩═════════════╩══════════════╝

Uwaga: Rozwój .NET jest prawie niezależny od VS, nie ma żadnej korelacji między wersjami każdego z nich. Odnosić się: https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/versions-and-dependencieswięcej.


179



Wygląda okropnie na telefon. urgh! - Happypig375
Jeśli wygląda ok na aplikacji stackoverflow - Dileep
Co z wersjami .NET Core? - Pac0
Rozwój Pac0 .NET Core jest prawie niezależny od rozwoju VS i jest trudny do śledzenia (jest open source). W rzeczywistości wszystkie VS, .NET i .NET Core iterują dość szybko. - nawfal


  • C # 1.0 z Visual Studio.NET

  • C # 2.0 z Visual Studio 2005

  • C # 3.0 z Visual Studio 2008

  • C # 4.0 z Visual Studio 2010

  • C # 5.0 z Visual Studio 2012

  • C # 6.0 z Visual Studio 2015

  • C # 7.0 z Visual Studio 2017


164



C # 5 CTP instaluje się na Visual Studio 2010. Nie mamy dowodów na to, że wersja ostateczna to zrobi. Należy pamiętać, że CTP LINQ również zainstalowany w Visual Studio 2005. - Jon Skeet
Tak, zgodzili się, chyba że pojawi się kolejna wersja Visual Studio, Microsoft podejmie inicjatywę, aby to zrobić. - iTSrAVIE


WERSJA_____SPECYFIKACJA JĘZYKA______MICROSOFT COMPILER

DO# 1.0/1.2____Grudzień 2001?/ 2003?___________Styczeń 2002?

C # 2.0_______Wrzesień 2005 r________________Listopad 2005?

C # 3.0_______Maj 2006 r_____________________Listopad 2006?

C # 4.0_______Marzec 2009 (projekt)______________Kwiecień 2010?

C # 5.0; wydane z .NET 4.5 w sierpniu 2012

C # 6.0; wydane z .NET 4.6 2015

C # 7.0; wydane z .NET 4.7 2017


63



Skąd wziąłeś specyfikację języka C # 2.0 w grudniu 2002 roku? Podobnie C # 4 w czerwcu 2006? Czy na pewno nie mówisz o wydaniach ECMA, które są zupełnie inne? - Jon Skeet
wystarczy odnieść poniższy link en.wikipedia.org/wiki/C_Sharp_(programming_language) - Pramodh


Możesz sprawdzić najnowsze wersje C # tutaj C# Versions


36





Historia wersji C #:

C # to prosty i potężny obiektowy język programowania opracowany przez firmę Microsoft.

C # rozwinęło się znacznie od czasu jego pierwszego wydania w 2002 roku. C # zostało wprowadzone z .NET Framework 1.0.

Poniższa tabela zawiera listę ważnych funkcji wprowadzonych w każdej wersji C #.

Enter image description here

Najnowsza wersja C # jest dostępna w Wersje C #.


35





Podsumowałem większość wersji w tej tabeli. Jedynymi brakującymi powinny być wersje ASP.NET Core. Dodałem także różne wersje środowiska ASP.NET MVC.

Zauważ, że ASP.NET 5 został przemianowany na ASP.NET Core 1.0, a ASP.NET MVC 6 został przemianowany na ASP.NET Core MVC 1.0.0. Uważam, że ta zmiana nastąpiła w okolicach stycznia 2016 r.

Uwzględniłem datę wydania ASP.NET 5 RC1 w tabeli, ale muszę jeszcze dołączyć rdzeń ASP.NET 1.0 i inne podstawowe wersje, ponieważ nie mogłem znaleźć dokładnych dat wydania. Możesz przeczytać więcej o datach wydania dotyczących ASP.NET Core tutaj: Kiedy jest zaplanowane wydanie ASP.NET Core 1.0 (ASP.NET 5 / vNext)?

Version


32



Nie jestem pewien, czy posiadanie MVC w tej samej tabeli jest pomocne, szczerze mówiąc ... to tylko osobny harmonogram wydań, skutecznie. - Jon Skeet
@ Jon To prawda, po prostu dodając ją tutaj dla każdego, kto może jej potrzebować, ponieważ starałem się znaleźć odpowiednie daty wydania frameworków .NET, aby lepiej zrozumieć całą historię wersji. - Mindless


Porównywanie artykułów MSDN "Co nowego w języku C # 2.0 i kompilatorze" i "Co nowego w programie Visual C # 2005", można wywnioskować, że" C # major_version.minor_version "jest ukuty zgodnie z numeracją wersji kompilatora.

Jest C # 1.2 odpowiadający .NET 1.1 i VS 2003 a także nazwany jako Visual C # .NET 2003.

Ale dalej Microsoft przestał zwiększać numery mniejsze (po kropce) lub mieć je inne niż zero, 0. Chociaż należy zauważyć, że C # odpowiadający .NET 3.5 jest nazwany w msdn.microsoft.com jako "Visual C # 2008 Service Pack 1".

Istnieją dwa równoległe nazwy: według głównej numeracji wersji .NET / kompilatora i numeracji Visual Studio.

C # 2.0 jest synonimem Visual C # 2005

C # 3.0 odpowiada (lub, bardziej poprawnie, może być kierowany) do:


24



Nie, C # odpowiadający .NET 3.5 ma nazwę "Visual C # 2008", jeśli naprawdę chcesz użyć tej numeracji. Funkcje C # 3.0 zostały wprowadzone w "Visual C # 2008", dlatego na stronie, z którą jesteś połączony, znajdują się w sekcji "Co nowego w oryginalnej wersji programu Visual C # 2008". Używanie numerów wersji programu Visual Studio jest generalnie złym pomysłem, ponieważ nie ma większego sensu, na przykład, gdy budujesz z Mono. Język C # ma dobrze określone numery wersji ... wiemy, który produkt Visual C # pierwotnie wprowadził tę wersję C #, ale to nie to samo. - Jon Skeet
@ Jonston, nie, nie wiem. Chciałem cię poprosić (i innego odbierającego), aby zaktualizował twoją odpowiedź, ale odkąd mój komentarz stał się zbyt długi, zdecydowałem, że wtedy przedstawię jako odpowiedź. Dzięki za informacje - Gennady Vanin Геннадий Ванин
Nie sądzę, C # 3.0 może działać na VS 2005. - nawfal