Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przechowywanie wersji narzędzi Microsoft C++ Build Tools (MSVC Build Tools) nie jest już synchronizowane z wersją programu Visual Studio, począwszy od programu Visual Studio 2026 w wersji 18.0 i narzędzi Microsoft C++ Build Tools w wersji 14.50. Aby zapoznać się z najnowszymi aktualizacjami MSVC w przyszłości, zobacz Co nowego w programie MSVC.
Co nowego w języku C++ w programie Visual Studio 2022
Program Visual Studio 2022 oferuje wiele aktualizacji i poprawek kompilatora i narzędzi języka Microsoft C++. Środowisko IDE programu Visual Studio oferuje również znaczne ulepszenia wydajności i produktywności, a teraz działa natywnie jako aplikacja 64-bitowa.
- Aby uzyskać więcej informacji na temat nowości we wszystkich programach Visual Studio, zobacz Co nowego w programie Visual Studio 2022.
- Aby uzyskać informacje na temat dat kompilacji wersji, zobacz Historia wersji programu Visual Studio 2022.
Co nowego w języku C++ w programie Visual Studio w wersji 17.14
Wydany w maju 2025 r.
| Aby uzyskać więcej informacji o | Zobacz |
|---|---|
| Co nowego dla deweloperów języka C++ | Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.14 |
| Funkcje biblioteki standardowej (STL) scalone funkcje C++26 i C++23, rozwiązania problemów grupy roboczej języka (LWG), ulepszenia wydajności, zachowanie rozszerzone i naprawione błędy | Dziennik zmian STL 17.14 |
| Nowe funkcje w środowisku IDE | Informacje o wersji 17.14 programu Visual Studio 2022 |
| Aktualizacje języka C++ | Aktualizacje języka C++ w MSVC w programie Visual Studio 2022 17.14 |
| Ulepszenia zgodności języka C++ | Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 17.14 |
Krótkie wyróżnienie niektórych nowych funkcji:
Debugowanie dynamiczne języka C++ umożliwia debugowanie zoptymalizowanego kodu bez wpływu na wydajność. Aby uzyskać więcej informacji, zobacz Debugowanie dynamiczne języka C++.
Zaimplementowano funkcje języka C++23 (wymaga
/std:c++latestlub/std:c++23preview):static operator()static operator[]-
if consteval. Umożliwia uruchamianie innego kodu w zależności od tego, czy instrukcja jest wykonywana w czasie kompilacji, czy w czasie wykonywania.
Automatycznie generuj komentarze dokumentacji za pomocą narzędzia GitHub Copilot. Aby uzyskać więcej informacji, zobacz Wprowadzenie do automatycznego generowania komentarzy dokumentacji w programie Visual Studio.
Użyj selektora modelu w programie Visual Studio, aby wybrać model AI dla narzędzia GitHub Copilot. Aby uzyskać więcej informacji, zobacz Zmienianie modelu AI dla czatu Copilot. Ten zrzut ekranu przedstawia selektor modelu w dolnej części okna czatu w usłudze GitHub Copilot:
Lista rozwijana selektora modelu jest otwarta. Dostępne opcje to: GPT-4o, o3-mini, Claude 3.7 Sonnet Thinking i inne.
Ulepszenia integracji Unreal Engine
- Debugger C++ programu Visual Studio obsługuje teraz Blueprints w Unreal Engine.
- Polecenia służące do kompilowania plików, modułów i wtyczek są dostępne natywnie w programie Visual Studio.
Nowa flaga kompilatora /forceInterlockedFunctions dynamicznie wybiera między instrukcjami załadunku i przechowywania wyłącznego Armv8.0 lub atomowymi instrukcjami Rozszerzenia Dużego Systemu Armv8.1 (LSE) na podstawie możliwości procesora w czasie wykonywania.
Dodano obsługę uzupełniania opartego na technologii IntelliSense i szybkich informacji dotyczących modułów CMake w programie Visual Studio. Możesz wyświetlić wszystkie dostępne moduły CMake, a po umieszczeniu wskaźnika myszy na odwołanym module CMake funkcja IntelliSense zawiera więcej informacji na temat wybranego modułu:
Zrzut ekranu przedstawia edycję w pliku CMakeLists .txt. Kursor jest na include (CMakePrintHelpers). IntelliSense mówi: Funkcje ułatwiające drukowanie właściwości i zmiennych, przydatne do debugowania.
Po rozpoczęciu wpisywania nazwy modułu CMake w plikach
CMakeLists.txtlub innych plikach skryptów CMake, funkcja IntelliSense udostępnia listę dostępnych modułów do wyboru:
Zrzut ekranu przedstawia edycję w pliku CMakeLists .txt. Kursor znajduje się na include (CMake). Lista rozwijana Intellisense zawiera wpisy dla CMake Add Fortran Subdirectory, CMake Dependent Option i nie tylko.
Guidelines Support Library (GSL) 4.2.0: Ta wersja zawiera ulepszenia wydajności dla
gsl::span, nowych funkcji i lepsze dopasowanie do standardów języka C++. Aby uzyskać więcej informacji, zobacz Ogłoszenie Biblioteki Wsparcia dla Wytycznych w wersji 4.2.0.
Co nowego w języku C++ w programie Visual Studio w wersji 17.13
wydany w lutym 2025 r.
| Aby uzyskać więcej informacji o | Zobacz |
|---|---|
| Co nowego dla deweloperów języka C++ | co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.13 |
| Funkcje biblioteki standardowej (STL) C++26 i C++23, rozwiązania problemów z grupą roboczą języka (LWG), ulepszenia wydajności, ulepszone zachowanie i naprawione błędy | Log zmian STL 17.13 |
| Nowe funkcje w środowisku IDE | Notatki o wydaniu wersji 17.13 programu Visual Studio 2022 |
| Aktualizacje języka C++ | aktualizacje kompilatora MSVC w programie Visual Studio 2022 17.13 |
| Ulepszenia zgodności języka C++ | ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 17.13 |
Krótkie wyróżnienie niektórych nowych funkcji:
ulepszenia języka C++
Wypróbuj funkcje języka C++23 w wersji zapoznawczej, ustawiając standard języka C++ na
/std:c++23preview. To ustawienie umożliwia korzystanie z najnowszych funkcji i poprawek usterek języka C++23. Aby uzyskać więcej informacji, zobacz /std (Określ wersję standardową języka).Obsługa sufiksu literału
size_tjęzyka C++23, która pomaga uniknąć obcinania lub niezgodności porównania ze znakiem — szczególnie podczas pisania pętli. Na przykład:// Infinite loop if v.size > max unsigned int for (auto i = 0u; i < v.size(); ++i) { ... } // Fixed because of uz literal for (auto i = 0uz; i < v.size(); ++i) { ... }Obsługa długości wektorów dla generowania kodu na x86 i x64. Aby uzyskać więcej informacji, zobacz /vlen.
Obsługa rozszerzeń Intel Advanced Vector Extensions 10 wersja 1. Aby uzyskać więcej informacji na temat
/arch:AVX10.1, zobacz /arch (x64).
ulepszenia biblioteki standardowej
Obsługa standardowej biblioteki dla coroutines. W tym przykładzie z P2502R2, funkcja
fibjest korutyną. Po wykonaniu instrukcjico_yieldfibzostaje zawieszony, a wartość zostaje zwrócona do wywołującego. Możesz wznowić coroutinefibpóźniej, aby wygenerować więcej wartości bez konieczności ręcznego zarządzania stanem.std::generator<int> fib() { auto a = 0, b = 1; while (true) { co_yield std::exchange(a, std::exchange(b, a + b)); } } int answer_to_the_universe() { auto rng = fib() | std::views::drop(6) | std::views::take(3); return std::ranges::fold_left(std::move(rng), 0, std::plus{}); }
Przeniesiono
system_clock,high_resolution_clockichrono_literalsz często dołączonego nagłówka wewnętrznego do<chrono>. Jeśli zobaczysz błędy kompilatora wskazujące, że typy, takie jaksystem_clock, lub literały zdefiniowane przez użytkownika, takie jak1729ms, nie są rozpoznawane, zawrzyj<chrono>.Ulepszono wektoryzowane implementacje konstruktorów
bitsetz ciągów,basic_string::find_last_of(),remove(),ranges::removeoraz rodziny algorytmówminmax_element()iminmax().Dodano wektoryzowane implementacje:
-
find_end()iranges::find_enddla elementów 1-bajtowych i 2-bajtowych. -
basic_string::find()ibasic_string::rfind()dla podciągu. -
basic_string::rfind()dla pojedynczego znaku.
-
Połączone raporty o błędach C++23:
GitHub Copilot
Usługa GitHub Copilot Free jest teraz dostępna. Uzyskaj 2000 uzupełnień kodu i 50 żądań czatu miesięcznie bez ponoszenia kosztów.
Uzupełnianie kodu narzędzia GitHub Copilot udostępnia sugestie autouzupełniania w tekście podczas programowania. Aby ulepszyć środowisko deweloperów języka C++, narzędzie GitHub Copilot zawiera inne istotne pliki jako kontekst. Zmniejsza to błędy, oferując bardziej istotne i dokładne sugestie.
Teraz możesz zażądać przeglądu kodu z witryny GitHub Copilot w oknie Git Changes:
Okno Zmiany w Gicie jest otwarte, a przycisk Recenzja GitHub Copilot jest wyróżniony.
GitHub Copilot szuka potencjalnych problemów i tworzy dla nich komentarze:
GitHub Copilot wykrył problem w linii if (is_enabled_) new_site.disable(). Proponuje się, że może to być błąd i prawdopodobnie powinno być: if (is_enabled_) new_site.enable(), ponieważ zamiarem wydaje się być włączenie nowej witryny, jeśli punkt przerwania jest włączony.
Aby użyć tej funkcji, upewnij się, że są włączone następujące elementy:
- Narzędzia>Opcje>Podgląd funkcji>Komentarze dotyczące żądania ściągnięcia
- Narzędzia>Opcje>GitHub>Copilot>Integracja kontroli źródła>Włącz funkcje podglądu Git.
GitHub Copilot Edits to nowa funkcja, która może wprowadzać zmiany w wielu plikach w projekcie. Aby rozpocząć nową sesję Edits, kliknij Utwórz nową sesję edycji w górnej części okna czatu GitHub Copilot:
Opisz zmiany, które chcesz wprowadzić, a Copilot sugeruje odpowiednie zmiany. Możesz wyświetlić podgląd edycji jeden po jednym i zaakceptować żądane lub wprowadzić poprawki:
Usługa GitHub Copilot wyświetla podsumowanie wprowadzonych zmian, takich jak 1. Utwórz nową podklasę range_breakpoint w pliku include/libsdb/breakpoint.hpp" i 2. Zaimplementuj klasę range_breakpoint w pliku src/breakpoint.cpp. Zostanie wyświetlona opcja zaakceptowania zmian.
Aby uzyskać więcej informacji, zobacz wydajniejsze iterowanie po wielu plikach za pomocą funkcji Copilot Edits w GitHubie.
CMake
- Teraz obsługuje ustawienia wstępne narzędzia CMake w wersji 9. Nowe rozszerzenia makr w polu dołączanym danego ustawienia wstępnego. Aby uzyskać więcej informacji, zobacz Rozszerzenie makr w oficjalnej dokumentacji narzędzia CMake.
Co nowego w języku C++ w programie Visual Studio w wersji 17.12
Wydany w listopadzie 2024 r.
| Aby uzyskać więcej informacji o | Zobacz |
|---|---|
| Co nowego dla deweloperów języka C++ | Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.12 |
| Funkcje biblioteki standardowej (STL) scalone funkcje C++26 i C++23, rozwiązania problemów grupy roboczej języka (LWG), ulepszenia wydajności, zachowanie rozszerzone i naprawione błędy | Dziennik zmian STL 17.12 |
| Nowe funkcje w środowisku IDE programu Visual Studio 17.12 | Informacje o wersji 17.12 programu Visual Studio 2022 |
| Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.12 | Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 17.12 |
Krótkie wyróżnienie niektórych nowych funkcji:
-
Ulepszenia biblioteki standardowej
- Ukończono implementację zakresów formatowania języka C++23 (P2286R8). Dodano moduły formatujące dla adapterów kontenerów
stack,queueipriority_queue. - Dodano wielowymiarowe operatory indeksowania, które również obsługują
<mdspan>. Na przykład:print("m[{}, {}]: '{}'; ", i, j, m[i, j]).
- Ukończono implementację zakresów formatowania języka C++23 (P2286R8). Dodano moduły formatujące dla adapterów kontenerów
-
Programowanie gier w języku C++
- Bezpośrednio otwórz projekty Unreal Engine w programie Visual Studio bez konieczności generowania pliku rozwiązania Visual Studio opakowującego projekt Unreal Engine. Aby uzyskać więcej informacji, zobacz Praca z projektami Unreal Engine w programie Visual Studio.
- Argumenty wiersza polecenia można określić do przekazania podczas debugowania bezpośrednio z poziomu paska narzędzi. Aby uzyskać więcej informacji, zobacz Ustawianie argumentów wiersza polecenia dla projektów Unreal Engine.
-
Wgląd w budowę
- Możesz uruchomić narzędzie Build Insights dla wybranych plików. Wybierz odpowiednie pliki w Eksplorator rozwiązań, kliknij prawym przyciskiem myszy i wybierz polecenie Uruchom szczegółowe informacje o kompilacji w wybranych plikach:
- Wyniki funkcji Build Insights można filtrować według projektu. Kliknij przycisk filtru w nagłówku kolumny filtru i wybierz projekty, dla których chcesz wyświetlić wyniki:
- Kliknięcie ikony znaku zapytania w oknie Build Insights, aby wyświetlić krótki opis kart oraz link do dokumentacji, która zawiera szczegółowe wyjaśnienie.
- Możesz uruchomić narzędzie Build Insights dla wybranych plików. Wybierz odpowiednie pliki w Eksplorator rozwiązań, kliknij prawym przyciskiem myszy i wybierz polecenie Uruchom szczegółowe informacje o kompilacji w wybranych plikach:
-
GitHub Copilot
- Możesz kliknąć pozycję Zapytaj Copilot obok wartości zmiennej, aby uzyskać wgląd w szczegółowe informacje oparte na sztucznej inteligencji, co doprowadziło do jego bieżącego stanu. Na przykład następujący program ma błąd off-by-one w warunku pętli:
Jeśli klikniesz ikonę Zapytaj Copilot dla zmiennejKod, który spowodował ten problem, to: for (auto it = h.animals_.begin(); it <= h.animals_.end(); it++).
it, zostanie wyświetlona informacja, dlaczego<NULL>:
Ten błąd znajduje się wewnątrz funkcji zdefiniowanej jako int calculate_number_of_cats(const house& h). Komunikat GitHub Copilot informuje: "Wartość wyrażenia to NULL, co oznacza, że iterator nie wskazuje na żaden prawidłowy element w wektorze animals_". W kontekście Twojego programu należy iterować przez elementy wektora animals_ w obiekcie house w celu zliczenia liczby obiektów typu Cat. Dlaczego ma wartość null. W oparciu o kontekst ustawień lokalnych i stosu wywołań: obiekt domu h ma pusty wektor animals_ (rozmiar=0). Warunek pętli it <= h.animals_.end() jest niepoprawny. Powinno to być zapisane jako != h.animals_.end().
- Możesz kliknąć pozycję Zapytaj Copilota o błędy na liście błędów programu Visual Studio, aby uzyskać pomoc dotyczącą błędu i sugerowanej poprawki. Na przykład:
Jeśli klikniesz pozycję Zapytaj Copilot, zostanie wyświetlony komunikat o błędzie:Ikona "Ask Copilot" jest podświetlona obok błędu, gdzie unique_ptr próbuje odwołać się do usuniętej funkcji.
Komunikat Copilot mówi: "Błąd występuje, ponieważ pętla oparta na zakresie próbowała skopiować obiekty std::unique_ptr, które nie są dozwolone, ponieważ nie można skopiować obiektu std::unique_ptr. Aby rozwiązać ten problem, zmieniono pętlę, aby użyć odwołania, aby uniknąć kopiowania obiektów std::unique_ptr. Dzięki temu pętla iteruje po odwołaniach do obiektów std::unique_ptr, co jest dozwolone.
-
Debugowanie
- Nowe wizualizatory debugowania dla elementów
mutex,recursive_muteximove_iterator. - Debugger wyświetla teraz zwracane wartości w wierszu:
- Nowe wizualizatory debugowania dla elementów
Co nowego w języku C++ w programie Visual Studio w wersji 17.11
Wydany w sierpniu 2024 r.
| Aby uzyskać więcej informacji o | Zobacz |
|---|---|
| Co nowego dla deweloperów języka C++ | Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.11 |
| Funkcje biblioteki standardowej (STL), scalone funkcje C++26 i C++23, raporty o wadach języka C++20, rozwiązania problemów z grupą roboczą języka (LWG), ulepszenia wydajności, ulepszone zachowanie i naprawione błędy | Dziennik zmian STL 17.11 |
| Nowe funkcje w środowisku IDE programu Visual Studio 17.11 | Informacje o wersji 17.11 programu Visual Studio 2022 |
| Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.11 | Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 17.11 |
Częściowa lista nowych funkcji:
Ulepszenia biblioteki standardowej
- Zaimplementowane sformatowane wyjście teraz obejmuje
std::range_formatteroraz formatery dlastd::pairistd::tuple. - Dodano obsługę dla
std::println()bez argumentów. Spowoduje to wyświetlenie pustego wiersza zgodnie z propozycją w P3142R0. - Ulepszona wektoryzacja dla kilku algorytmów, w tym
replace_copy(),replace_copy_if(),ranges::replace_copy,ranges::replace_copy_if,find_first_of()iranges::find_first_of, dla elementów 8-bitowych i 16-bitowych,mismatch(),ranges::mismatch,count(),ranges::count,find(),ranges::find,ranges::find_lastiranges::iota.
- Zaimplementowane sformatowane wyjście teraz obejmuje
Programowanie gier w języku C++
- Teraz można dodawać typowe szablony, moduły i wtyczki klasy Unreal Engine z poziomu programu Visual Studio. Aby uzyskać więcej informacji, zobacz Dodawanie klas, modułów i wtyczek aparatu Unreal Engine w programie Visual Studio.
- Nowy pasek narzędzi Unreal Engine zapewnia szybki dostęp do czynności związanych z silnikiem Unreal Engine w programie Visual Studio. Pasek narzędzi umożliwia szybkie łączenie się z procesami Unreal Engine, ponowne skanowanie pamięci podręcznej Blueprints, szybki dostęp do dziennika Unreal Engine i strony konfiguracji Unreal Engine dla programu Visual Studio. Aby uzyskać więcej informacji, zobacz Unreal Engine Toolbar (Unreal Engine Toolbar).
- Teraz możesz filtrować wyniki śledzenia według projektu. Ponadto wyniki w każdym wierszu pokazują ścieżkę względną i nazwę pliku zamiast pełnej ścieżki. Ulepszono również grupowanie wyników w widoku Dołączone pliki :
Widok Uwzględnionych plików zawiera nową kolumnę dla projektu. Kolumna Project (Projekt) jest zaznaczona, a wybrane są projekty, takie jak (Select All), CompilerIdC, OpenAL, common itd. Dołączone pliki są wymienione według ścieżki względnej i nazwy pliku i zgrupowane razem.
debugowanie narzędzia CMake
- Teraz możesz debugować skrypty CMake i pliki
CMakeLists.txtw debuggerze Visual Studio dla projektów CMake, które są przeznaczone dla systemu Linux za pomocą Windows Subsystem for Linux (WSL) lub SSH. Aby uruchomić sesję debugowania CMake w programie Visual Studio, ustaw punkt przerwania w plikuCMakeLists.txt, a następnie przejdź do Project>, a dalej Configure Cache with CMake Debugging.
- Teraz możesz debugować skrypty CMake i pliki
GitHub Copilot
- Po umieszczeniu wskaźnika myszy na symbolach w edytorze kodu kliknij przycisk Copilot Tell me more (Pokaż mi więcej ) w oknie dialogowym Szybkie informacje, aby dowiedzieć się więcej o danym symbolu:
Okno Szybkie informacje jest wyświetlane powyżej funkcji. Link Powiedz mi więcej jest wyróżniony.
- GitHub Copilot może generować sugestie nazewnictwa identyfikatorów (zmiennych, metod lub klas) na podstawie sposobu użycia identyfikatora i stylu kodu.
Okno dialogowe Zmienianie nazwy zawiera pole Nowa nazwa z listą rozwijaną pokazującą następujące opcje: text_color, font_color, display_color, console_color i menu_text_color.
Potrzebna jest aktywna subskrypcja narzędzia GitHub Copilot. Kliknij prawym przyciskiem myszy zmienną, której nazwę chcesz zmienić, a następnie wybierz polecenie Zmień nazwę (
Ctrl+R,Ctrl+R). Wybierz ikonę GitHub Copilot sparkle, aby wygenerować sugestie dotyczące nazewnictwa.Debugowanie
- Warunkowe punkty przerwania w języku C++ są szybsze.
Ulepszenia diagnostyki
- Ulepszona diagnostyka podczas wywoływania
std::get<T>dlastd::tuple, który ma wiele wystąpieńTw argumentach szablonu. MSVC kiedyś raportował:
error C2338: static_assert failed: 'duplicate type T in get<T>(tuple)'.
Teraz raportuje:
error C2338: static_assert failed: 'get<T>(tuple<Types...>&) requires T to occur exactly once in Types.(N4971 [tuple.elemm]/5)' - Ulepszona diagnostyka, jeśli
std::ranges::tonie może skonstruować żądanego wyniku. MSVC kiedyś raportował:
error C2338: static_assert failed: 'the program is ill-formed per N4950 [range.utility.conv.to]/2.3'
Teraz raportuje:
error C2338: static_assert failed: 'ranges::to requires the result to be constructible from the source range, either by using a suitable constructor, or by inserting each element of the range into the default-constructed object. (N4981 [range.utility.conv.to]/2.1.5)'
- Ulepszona diagnostyka podczas wywoływania
Co nowego w języku C++ w programie Visual Studio w wersji 17.10
Wydany w maju 2024 r.
| Aby uzyskać więcej informacji o | Zobacz |
|---|---|
| Co nowego dla deweloperów języka C++ | Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.10 |
| Funkcje biblioteki standardowej (STL), scalone funkcje C++26 i C++23, raporty o wadach języka C++20, rozwiązania problemów z grupą roboczą języka (LWG), ulepszenia wydajności, ulepszone zachowanie i naprawione błędy | Dziennik zmian STL 17.10 |
| Nowe funkcje w środowisku IDE programu Visual Studio 17.10 | Informacje o wersji 17.10 programu Visual Studio 2022 |
| Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.10 | Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 17.10 |
Częściowa lista nowych funkcji:
- Aktualizacja zestawu narzędzi MSVC: wersja zestawu narzędzi MSVC jest aktualizowana z wersji 19.39 do 19.40. Może to mieć wpływ na projekty, które mają założenia dotyczące wersji. Aby uzyskać więcej informacji na temat sposobów, w jakie to wpływa na projekty zakładające, że wszystkie wersje MSVC to 19.3X dla wydań Visual Studio 2022, zobacz Minor Version Number 14.40 w zestawie narzędzi MSVC w VS 2022 v17.10.
-
Ulepszenia biblioteki standardowej: biblioteka standardowa dodała obsługę formatowania wskaźników P2510R3, co przybliża zestaw specyfikatorów formatu dla wskaźników do tych, które już istnieją dla liczb całkowitych przy użyciu
std::format. Ulepszono wektoryzowane implementacje elementówstd::min_element,std::ranges::mini pokrewnych. - Szczegółowe informacje o kompilacji: teraz udostępnia informacje o tworzeniu wystąpienia szablonu. Zobacz Widok szablonów dla Build Insights w programie Visual Studio lub nagranie Pure Virtual C++ - Widok szablonów dla Build Insights w programie Visual Studio.
- Wtyczka Unreal Engine: istnieje nowa funkcja umożliwiająca uruchomienie wtyczki Unreal Engine w tle, co zmniejsza koszty uruchamiania. Jest to funkcja, którą można włączyć za pomocą Narzędzia>Opcje>Unreal Engine.
- Nowe funkcje dla systemu Linux: zobacz Nowe funkcje programistyczne systemu Linux w programie Visual Studio.
- Obiekty docelowe CMake: można teraz przypiąć obiekty docelowe w widoku obiektów docelowych CMake.
- UX Menedżera Połączeń: Doświadczenie użytkownika zapewnia bardziej płynne działania podczas nawiązywania połączenia z systemami zdalnymi. Aby uzyskać więcej informacji, zobacz Ulepszenia użyteczności w programie Visual Studio Menedżer połączeń.
- Komentarze do pull request: możesz teraz wyświetlać komentarze usług GitHub i Azure DevOps bezpośrednio w pliku roboczym. Włącz flagę funkcji Komentarze żądania ściągnięcia w Opcje>Środowisko>Podgląd funkcji i wyewidencjonuj gałąź żądania ściągnięcia, aby rozpocząć pracę.
- Zawartość wygenerowana przez sztuczną inteligencję: Narzędzie GitHub Copilot może teraz tworzyć wersje robocze opisów próśb ściągnięcia. Wymaga aktywnej subskrypcji narzędzia GitHub Copilot. Wypróbuj, klikając ikonę Dodaj opis żądania ściągnięcia wygenerowany przez AI z ikoną pióra w oknie Tworzenia żądania ściągnięcia.
-
Podgląd obrazu: umieść kursor nad ścieżką obrazu, aby wyświetlić podgląd ze szczegółami rozmiaru. Rozmiar jest ograniczony do 500 pikseli szerokości i wysokości.
Wskaźnik myszy znajduje się na linii std::filesystem::path vs_logo_path = "../images/vs_logo.png". Poniżej pojawi się podgląd logo programu Visual Studio oraz informacje o rozmiarze 251 x 500 pikseli i 13,65 KB.
- Tworzenie punktu przerwania/punktu śledzenia: teraz można tworzyć warunkowe punkty przerwania lub punkty śledzenia bezpośrednio z wyrażeń w kodzie źródłowym z menu prawym przyciskiem myszy. Działa to na nazwach właściwości lub polach i wartościach z autos, ustawień lokalnych, okien kontrolnych lub etykietek danych.
- Okno dialogowe Dołącz do procesu: Funkcjonalność okna dialogowego Dołącz do procesu jest bardziej przyjazna dla użytkownika. Teraz można łatwo przełączać się między widokiem drzewa i widokiem listy, lepiej organizować procesy za pomocą zwijanych sekcji oraz wybierać typy kodu z uproszczonym polem rozwijanym. Ponadto funkcja "Wybieranie/śledzenie okna" jest teraz łatwiejsza w użyciu, umożliwiając śledzenie dwukierunkowe: wybranie procesu wyróżnia jego okno, a kliknięcie okna powoduje wybór jego procesu.
-
Integracja z rozwiązaniem GitHub Copilot: rozszerzenia GitHub Copilot i Copilot Chat są teraz ujednolicone i dostarczane bezpośrednio w programie Visual Studio. Aby go zainstalować, zainstaluj składnik GitHub Copilot w Instalator programu Visual Studio:
Interfejs GitHub Copilot znajduje się w prawym górnym rogu programu Visual Studio. Aby go używać, potrzebujesz aktywnej subskrypcji usługi GitHub Copilot.
Przycisk GitHub Copilot jest wyświetlany w prawym górnym rogu programu Visual Studio. Dostępne są opcje otwierania okna czatu, ustawienia GitHub Copilot, dowiedz się więcej i zarządzania subskrypcją Copilot.
Co nowego w języku C++ w programie Visual Studio w wersji 17.9
Wydany w lutym 2024 r.
| Aby uzyskać więcej informacji o | Zobacz |
|---|---|
| Co nowego dla deweloperów języka C++ | Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.9 |
| Funkcje scalone w bibliotece standardowej C++23 (STL), poprawiona wydajność, cechy ulepszonego zachowania, rozwiązania problemów Grupy Roboczej Języka (LWG) oraz usunięte błędy. | Dziennik zmian STL 17.9 |
| Nowe funkcje w środowisku IDE programu Visual Studio 17.9 | Informacje o wersji 17.9 programu Visual Studio 2022 |
| Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.9 | Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 |
| Podsumowanie aktualizacji zaplecza języka C++ | Aktualizacje zaplecza MSVC od wersji 17.3 programu Visual Studio 2022 |
Częściowa lista nowych funkcji:
-
#includediagnostyka, która umożliwia szczegółową analizę#includedyrektyw. Aktywuj tę funkcję, klikając prawym przyciskiem myszy na#includei wybierając #include directives>, a następnie Włącz diagnostykę dyrektyw #include. Nad każdym#includeznajduje się liczba razy, ile razy twój kod odwołuje się do tego pliku#include. Kliknij link odwołania, aby przejść do miejsca, gdzie Twój kod używa czegoś z tego pliku nagłówkowego. Aby wyświetlić czas kompilacji#includedyrektyw, uruchom Build Insights, przechodząc do Kompilacja>Uruchom Build Insights dla rozwiązania>Kompilacja.
Powyżej pliku #include znajduje się link referencyjny oraz wiele odwołań do tego pliku include (w tym przypadku 1). Czas kompilacji jest również wymieniony (w tym przypadku mniej niż 1/2 sekundy).
- Wizualizacja układu pamięci przedstawiająca sposób rozmieszczania pamięci dla klas, struktur i związków. Najedź kursorem na typ i wybierz link Układ pamięci w Szybkie informacje, aby otworzyć dedykowane okno wyświetlające układ pamięci wybranego typu. Najechanie kursorem na poszczególne typy danych w tym oknie dostarcza szczegółowych informacji o ich rozmiarze i przesunięciu w obrębie danego typu.
W oknie układu pamięci jest wyświetlana zawartość klasy Snake. Przedstawia przesunięcia pamięci różnych pól klasy, takich jak klasy Point dla lokalizacji głowy i ciała, punktacji itd.
- Teraz możesz określić własny plik wykonywalny narzędzia CMake. Ta funkcja jest przydatna, jeśli chcesz użyć określonej wersji narzędzia CMake, która nie jest dostarczana z programem Visual Studio. Przejdź do Narzędzia>Opcje i wybierz CMake>Ogólne. Wybierz pozycję Włącz niestandardowy plik wykonywalny narzędzia CMake i określ ścieżkę katalogu pliku wykonywalnego narzędzia CMake.
Okno dialogowe opcji CMake z wyróżnioną opcją "Włącz niestandardowy plik wykonywalny CMake" i pole "Katalog dla plików wykonywalnych CMake".
- Ulepszone IntelliSense dla projektów Unreal Engine.
- Ulepszona obsługa języka C++23:
std::formatistd::spanformattable,range_format,format_kind, orazset_debug_format()w ramach P2286R8 Formatowanie zakresów<mdspan>zgodnie z P0009R18 i kolejnymi zmianami w sformułowaniach, które zostały wprowadzone do standardu C++23. Ponadto,format()można formatować wskaźniki za pomocą P2510R3.
Co nowego w języku C++ w programie Visual Studio w wersji 17.8
Wydany w listopadzie 2023 r.
| Aby uzyskać więcej informacji o | Zobacz |
|---|---|
| Co nowego dla deweloperów języka C++ | Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.8 |
| Biblioteka Standardowa (STL) scaliła funkcje języka C++26, C++23, rozszerzenia C++20, rozwiązania problemów z grupą roboczą języka (LWG), ulepszenia wydajności, ulepszone zachowanie i naprawione błędy | Dziennik zmian STL 17.8 |
| Nowe funkcje w środowisku IDE programu Visual Studio 17.8 | Informacje o wersji 17.8 programu Visual Studio 2022 |
| Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.8 | Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 |
| Omówienie ulepszeń języka C++ w programach Visual Studio, VS Code i vcpkg w 2023 r. | Rok ulepszeń języka C++ |
Częściowa lista nowych funkcji:
- Ustrukturyzowana diagnostyka błędów języka C++ w oknie danych wyjściowych oraz nowe okno szczegółów problemu, które zawiera więcej informacji o błędzie. Aby uzyskać więcej informacji, zobacz Ustrukturyzowane dane wyjściowe SARIF i okno szczegóły problemu.
- Funkcja, która umożliwia wizualizowanie rozmiaru i wyrównania klas, struktur, unii, typów bazowych lub wyliczeń jeszcze przed skompilowaniem kodu. Najedź wskaźnikiem myszy na identyfikator, aby wyświetlić informacje o rozmiarze i wyrównaniu.
- Funkcja sugerująca, kiedy oznaczyć funkcje członkowskie
const, ponieważ nie modyfikują stanu obiektu. Najedź na funkcję składową i kliknij ikonę żarówki, aby oznaczyć funkcję jakoconst. - Program Visual Studio wyświetla teraz monit o oznaczenie funkcji globalnych jako statycznych za pomocą ikony śrubokręta wyświetlanej według nazwy funkcji. Kliknij ikonę śrubokręta, aby oznaczyć funkcję jako statyczną.
- Nieużywane dyrektywy #include są wygaszone w edytorze. Możesz umieścić wskaźnik myszy na wygaszonym dołączeniu i użyć menu żarówki, aby usunąć to dołączenie lub wszystkie nieużywane dołączenia. Można również dodawać
#includedyrektywy dla jednostek, które są pośrednio dołączane za pośrednictwem innych nagłówków. Aby uzyskać więcej informacji, zobacz Czyszczenie C/C++ w programie Visual Studio. - Więcej obsługi Unreal Engine
- Adapter testowy Unreal Engine umożliwia odnajdywanie, uruchamianie, zarządzanie i debugowanie testów Unreal Engine bez opuszczania środowiska IDE programu Visual Studio.
- Za pomocą fragmentów kodu Unreal Engine można znaleźć typowe konstrukcje Unreal Engine jako fragmenty na liście członków.
- Usługa Build Insights jest teraz zintegrowana z programem Visual Studio 2022 i współpracuje z projektami MSBuild i CMake przy użyciu MSVC. Teraz możesz wyświetlić dodatkowe informacje o kompilacji funkcji, takie jak czas kompilowania, liczba elementów ForceInlines i wpływ plików nagłówków na czas kompilacji. Aby uzyskać więcej informacji, zobacz Samouczek: rozwiązywanie problemów z inliningiem funkcji w czasie kompilacji i Samouczek: rozwiązywanie problemów ze wpływem plików nagłówkowych na trwanie kompilacji.
- Zdalna obsługa testów jednostkowych systemu Linux teraz umożliwia uruchamianie testów CTest i GTest na zdalnych maszynach z systemem Linux z Eksploratora testów w programie Visual Studio, podobnie jak testy lokalne.
Co nowego w języku C++ w programie Visual Studio w wersji 17.7
Wydany w sierpniu 2023 r.
| Aby uzyskać więcej informacji o | Zobacz |
|---|---|
| Co nowego dla deweloperów języka C++ | Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.7 |
| Nowe funkcje języka C++ specyficzne dla tworzenia gier | Uwolnienie możliwości tworzenia gier w programie Visual Studio 2022 dla języka C++ |
| Funkcje C++23 scalone z biblioteką standardową (STL), decyzje dotyczące rozwiązania problemów Grupy Roboczej Języka (LWG), poprawa wydajności, lepsza funkcjonalność i naprawione błędy | Dziennik zmian STL 17.7 |
| Nowe funkcje w środowisku IDE programu Visual Studio 17.7 | Informacje o wersji 17.7 programu Visual Studio 2022 |
| Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.7 | Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 |
Częściowa lista nowych funkcji:
- Szybsze sesje debugowania i szybsze ładowanie projektów
- Szczegółowe wizualizacje rozszerzania makr
- Jednoklikowe pobieranie Podsystemu Windows dla systemu Linux (WSL)
- Ulepszona obsługa komentarzy Doxygen
- Analiza kompilacji języka C++ na potrzeby tworzenia gier
- Dodano
/std:clatestdla kompilatora języka C. - Ulepszenia projektu Unreal Engine, takie jak szybsza funkcja IntelliSense i kolorowanie składni, możliwość znajdowania wszystkich odwołań do Blueprints Unreal Engine i nie tylko.
Co nowego w języku C++ w programie Visual Studio w wersji 17.6
Wydany w maju 2023 r.
| Aby uzyskać więcej informacji o | Zobacz |
|---|---|
| Co nowego dla deweloperów języka C++ | Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.6 |
| Funkcje C++23 scalone z biblioteką standardową (STL), decyzje dotyczące rozwiązania problemów Grupy Roboczej Języka (LWG), poprawa wydajności, lepsza funkcjonalność i naprawione błędy | Dziennik zmian STL 17.6 |
| Nowe funkcje w środowisku IDE programu Visual Studio 17.6 | Informacje o wersji 17.6 programu Visual Studio 2022 |
| Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.6 | Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 |
Częściowa lista nowych funkcji obejmuje:
- Debugowanie skryptu narzędzia CMake
- Wbudowana obsługa języka cieniowania wysokiego poziomu (HLSL)
- Przeglądarka dziennika Unreal Engine
- VCPKG jest teraz domyślnie dodawany
- Początkowa obsługa języka C++20 w projektach C++/CLI oraz niektóre standardowe funkcje bibliotek języka C++23 dla zakresów.
Co nowego w języku C++ w programie Visual Studio w wersji 17.5
Wydany w lutym 2023 r.
| Aby uzyskać więcej informacji o | Zobacz |
|---|---|
| Co nowego dla deweloperów języka C++ | Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.5 |
| Funkcje C++23 scalone z biblioteką standardową (STL), decyzje dotyczące rozwiązania problemów Grupy Roboczej Języka (LWG), poprawa wydajności, lepsza funkcjonalność i naprawione błędy | Dziennik zmian STL 17.5 |
| Nowe funkcje w środowisku IDE programu Visual Studio 17.5 | Informacje o wersji 17.5 programu Visual Studio 2022 |
Częściowa lista nowych funkcji obejmuje:
std::move,std::forward,std::move_if_noexceptistd::forward_liketeraz nie generują wywołań funkcji w wygenerowanym kodzie, nawet w trybie debugowania. Ta zmiana pozwala uniknąć rzutów nazwanych, co powoduje niepotrzebne obciążenie w kompilacjach debugowania./permissive-(lub opcja, która implikuje to, na przykład/std:c++20lub/std:c++latest) jest wymagana.Dodano
[[msvc::intrinsic]]. Ten atrybut można zastosować do funkcji nierekursywnych składających się z pojedynczego rzutowania, które przyjmują tylko jeden parametr.Dodano obsługę konsoli systemu Linux w zintegrowanym terminalu, co umożliwia we/wy terminalu.
Dodano początkową obsługę eksperymentalną dla niepodzielnych elementów pierwotnych C11 (
<stdatomic.h>). Możesz włączyć tę funkcję eksperymentalną za pomocą opcji/experimental:c11atomicsw trybie/std:c11lub późniejszym.Dodano nowy zestaw eksperymentalnych kontroli o wysokim poziomie pewności do narzędzia do sprawdzania długości życia obiektu w celu zredukowania hałasu.
Nowa funkcja w wersji zapoznawczej, Remote Eksplorator Plików, umożliwia wyświetlanie katalogu plików na maszynach zdalnych w programie VS oraz wysyłanie i pobieranie do niego plików.
Zmieniono wersjonowanie plików wykonywalnych CMake dostarczanych z programem Visual Studio, aby pasowały do wersji Kitware.
Dodano obsługę Hot Reload do szablonu projektu CMake.
Przejdź do definicji w C++ teraz używa bardziej subtelnego wskaźnika operacyjnego czasu, zastępując modalne okno dialogowe w poprzednich wersjach.
Rozpoczęto wdrażanie eksperymentu dostarczającego bardziej inteligentne wyniki w autouzupełnianiu i na liście składowych języka C++. Ta funkcja była wcześniej znana jako Predykcyjna funkcja IntelliSense, ale teraz używa nowej metody prezentacji.
Teraz dostarczamy natywny zestaw narzędzi Clang arm64 z obciążeniem LLVM, umożliwiając natywną kompilację na maszynach Arm64.
Dodano lokalizację do rozszerzenia Image Watch (to rozszerzenie jest dostępne w Marketplace i nie jest dołączone do Instalatora programu Visual Studio).
Dodano obsługę otwierania okna terminalu do aktualnie uruchomionego kontenera deweloperów.
Wprowadzono kilka ulepszeń rozszerzenia makr IntelliSense. W szczególności włączyliśmy rekurencyjne rozszerzanie w większej liczbie kontekstów i dodaliśmy opcje w wyskakującym oknie, aby skopiować rozszerzenie do schowka lub rozszerzyć makro bezpośrednio.
Monitorowanie współbieżne jest teraz obsługiwane w monitorze szeregowym. Monitorowanie współbieżne umożliwia monitorowanie wielu portów jednocześnie jednocześnie. Naciśnij przycisk plus, aby otworzyć inny monitor szeregowy i rozpocząć pracę.
Teraz można wyświetlać właściwości z klas bazowych zmodyfikowanych w zasobie Unreal Blueprint bez opuszczania programu Visual Studio. Kliknij dwukrotnie odwołanie do strategii dla klasy lub właściwości języka C++, aby otworzyć inspektora zasobów UE w programie Visual Studio.
Włączono uruchamianie aplikacji DevContainers na zdalnej maszynie z systemem Linux.
Włączono wybór wielu celów do skompilowania w widoku celów CMake.
Dodano obsługę CMakePresets.json w wersji 5. Aby uzyskać informacje o nowych funkcjach, zobacz dokumentację narzędzia CMake.
Włączono Eksploratora testów w celu równoległego kompilowania i testowania wielu obiektów docelowych narzędzia CMake.
Dodano opcję "Otwórz kontener w terminalu" do kontenerów deweloperskich.
Zaimplementowano standardowe funkcje biblioteki:
Co nowego w języku C++ w programie Visual Studio w wersji 17.4
Wydany w listopadzie 2022 r.
| Aby uzyskać więcej informacji o | Zobacz |
|---|---|
| Co nowego dla deweloperów języka C++ | co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.4 |
| Funkcje C++23 scalone z biblioteką standardową (STL), decyzje dotyczące rozwiązania problemów Grupy Roboczej Języka (LWG), poprawa wydajności, lepsza funkcjonalność i naprawione błędy | Dziennik zmian STL 17.4 |
| Nowe funkcje w środowisku IDE programu Visual Studio 17.4 | Informacje o wersji 17.4 programu Visual Studio 2022 |
| Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.4 | Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 |
Częściowa lista nowych funkcji w wersji 17.4:
Ulepszone komunikaty o błędach kompilatora w celu zapewnienia bardziej poprawnych i przydatnych informacji, zwłaszcza w przypadku pojęć.
Dodano eksperymentalną opcję
/experimental:log<directory>MSVC, aby wyprowadzić ustrukturyzowaną diagnostykę SARIF do określonego katalogu.Dodano obsługę atrybutów C23 do funkcji IntelliSense oraz postępy we wsparciu dla modułów C++20.
Zwiększona wydajność indeksowania podczas otwierania nowego rozwiązania. Duże projekty mogą odnotować poprawę o 20-35% w stosunku do 17,3.
Ulepszona optymalizacja nazwanych wartości zwracanych (NRVO):
- Funkcja NRVO jest włączona w przypadku przypadków obejmujących obsługę wyjątków lub pętle.
- Funkcja NRVO jest włączona nawet pod
/Od, jeśli użytkownik przekaże opcję/Zc:nrvo, lub/std:c++20lub nowszą, lub/permissive-. - Teraz możesz wyłączyć funkcję NRVO przy użyciu opcji
/Zc:nrvo-.
Uaktualniono wersję maszyny LLVM dostarczanej z programem Visual Studio do wersji 15.0.1. Aby uzyskać więcej informacji na temat dostępnych funkcji, zobacz informacje o wydaniu LLVM i Clang.
Dodano obsługę artefaktów vcpkg w projektach CMake w programie Visual Studio. W przypadku projektów zawierających manifest vcpkg środowisko jest aktywowane automatycznie podczas otwierania projektu. Dowiedz się więcej o tej funkcji w wpisie w blogu dotyczącym aktywacji środowiska vcpkg w programie Visual Studio .
Teraz możesz używać usługi Dev Containers dla projektów języka C++. Dowiedz się więcej o tej funkcji w naszym wpisie w blogu Dev Containers for C++ .
Funkcja IntelliSense uwzględnia teraz kolejność preincludowanych nagłówków, gdy jeden z nich jest PCH. Wcześniej, gdy PCH był używany za pośrednictwem
/Yui wymuszony za pośrednictwem/FI, IntelliSense zawsze przetwarzała go jako pierwszy, przed wszystkimi innymi nagłówkami zawartymi za pośrednictwem/FI. To zachowanie nie było zgodne z działaniem wersji kompilacyjnej. Dzięki tej zmianie/FInagłówki są przetwarzane w podanej kolejności.Usunięto wewnętrzne prefiksy z nazw CTest w Eksploratorze testów.
Zaktualizowano wersję narzędzia CMake dostarczoną z programem Visual Studio do wersji 3.24.1. Aby uzyskać szczegółowe informacje na temat tego, co jest dostępne, zobacz uwagi do wydania narzędzia CMake.
Aktualizacja zestawu SDK systemu Android:
- Skrypty Ant zostały usunięte, więc użytkownicy nie zobaczą już szablonów opartych na antach w oknie dialogowym Nowy projekt. Aby uzyskać pomoc dotyczącą migracji z szablonów Ant do szablonów narzędzia Gradle, zobacz Migrowanie kompilacji z platformy Apache Ant
- Dodano obsługę kompilowania przy użyciu zestawów NDK 23 i 24
- Zaktualizowano składnik NDK do wersji 23 LTS
Dodano wektoryzowane implementacje
ranges::min_element(),ranges::max_element()iranges::minmax_element()Kontynuujemy śledzenie najnowszych zmian w standaryzacji języka C++. Obsługa tych funkcji języka C++23 jest dostępna poprzez dodanie
/std:c++latestdo opcji kompilatora.string_viewKonstruktor zakresu P2499R0 powinien byćexplicitauto(x)P0849R8 : rozkład kopii w języku(Część kompilatora nie jest jeszcze zaimplementowana. Część biblioteki została zaimplementowana w trybie C++20, gdy obsługa zakresów została początkowo zaimplementowana).
P2301R1 Dodać alias
pmrdostd::stacktraceP2440R1
ranges::iota,ranges::shift_left,ranges::shift_right
Dodano opcję "Nawigacja po utworzeniu deklaracji/definicji", aby umożliwić wybranie zachowania nawigacji funkcji Utwórz deklarację/definicję. Możesz wybrać między podglądem (ustawieniem domyślnym) lub otwarciem dokumentu albo bez nawigacji.
Kompilacje Arm64 programu Visual Studio zawierają teraz wersje Arm64 narzędzi CMake i Ninja.
Dodano obsługę presetów CMake w wersji 4. Aby uzyskać szczegółowe informacje na temat tego, co jest dostępne, zobacz uwagi do wydania narzędzia CMake.
Połączenia z systemem zdalnym przy użyciu Menedżer połączeń obsługują teraz protokół SSH ProxyJump. Serwer ProxyJump służy do uzyskiwania dostępu do hosta SSH za pośrednictwem innego hosta SSH (na przykład w celu uzyskania dostępu do hosta za zaporą).
Co nowego w języku C++ w programie Visual Studio w wersji 17.3
Wydany w sierpniu 2022 r.
| Aby uzyskać więcej informacji o | Zobacz |
|---|---|
| Co nowego dla deweloperów języka C++ | Ulepszenia języka C++ w wersji 17.3 |
| Funkcje C++23 scalone z biblioteką standardową (STL), decyzje dotyczące rozwiązania problemów Grupy Roboczej Języka (LWG), poprawa wydajności, lepsza funkcjonalność i naprawione błędy | Dziennik zmian STL 17.3 |
| Nowe funkcje w środowisku IDE programu Visual Studio 17.3 | Informacje o wersji 17.3 programu Visual Studio 2022 |
| Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.3 | Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 |
Częściowa lista nowych funkcji w wersji 17.3:
- Łańcuch narzędzi Arm64EC nie jest już oznaczony jako eksperymentalny i jest gotowy do użycia w środowisku produkcyjnym.
- Terminal programu Visual Studio może być teraz używany jako klient SSH z przechowywanymi połączeniami SSH. Po zainstalowaniu programu C++ for Linux Tools otwórz okno narzędzia terminalu. Lista rozwijana Terminal zostanie wypełniona zapisanymi połączeniami. Po wybraniu połączenia zostanie otwarte nowe okno terminalu w programie Visual Studio, które pokazuje pseudo-terminal w systemie zdalnym. Obsługiwane są znaki sterujące, kolory i rozpoznawanie położenia kursora.
- Program Visual Studio może teraz dodawać szablony klas Unreal Engine dla projektów UE. Aby wypróbować tę funkcję, upewnij się, że w Instalatorze programu Visual Studio w obciążeniu Programowanie gier w języku C++ wybrano obsługę środowiska IDE dla Unreal Engine. Podczas pracy nad projektem UE kliknij prawym przyciskiem myszy wewnątrz projektu lub folderu/filtru i wybierz polecenie Dodaj>klasę UE.
- Przejdź do definicji teraz zapamiętuje poprzednią sygnaturę i nawiguje odpowiednio, gdy lepsze dopasowanie jest niedostępne (na przykład po ręcznej zmianie sygnatury jednego z elementów). Reaktywność funkcji Przejdź do wszystkich została ulepszona. Wcześniej wyniki pojawiły się po zatrzymaniu wpisywania. W nowym środowisku wyniki są wyświetlane podczas wpisywania.
- W kontekstach wymagających ukończenia typu
enum(na przykład przypisania do zmiennychenum, etykiet przypadków, zwracania typówenumitd.) lista autouzupełniania jest teraz filtrowana tylko do pasujących wyliczeń i powiązanych konstrukcji. - Dodano obsługę funkcji NuGet PackageReference dla projektów C++/CLI MSBuild przeznaczonych dla platformy .NET Core. Ta zmiana została wprowadzona w celu odblokowania mieszanych baz kodu z możliwości wdrożenia platformy .NET Core. Ta obsługa nie działa w przypadku innych typów projektów C++ ani żadnych typów projektów C++ przeznaczonych dla platformy .NET Framework. Nie ma planów rozszerzenia obsługi funkcji PackageReference na inne scenariusze języka C++. Zespół pracuje nad oddzielnymi rozwiązaniami w kontekście narzędzia vcpkg dla scenariuszy innych niż MSBuild, aby dodać dodatkową funkcjonalność.
- Dodano okno Monitora szeregowego do programowania osadzonego, dostępne przez Debugowanie>Windows>Monitor szeregowy.
- Ulepszono indeksowanie języka C++ o ok. 66% w porównaniu z 17,2.
- Zaktualizowano wersję narzędzia CMake dostarczoną z programem Visual Studio do wersji 3.23. Aby uzyskać szczegółowe informacje o dostępności, zobacz informacje o wersji narzędzia CMake 3.23.
- Uaktualniono wersje narzędzi LLVM dostarczanych z programem Visual Studio do wersji 14. Aby uzyskać szczegółowe informacje o dostępnych funkcjach, zobacz uwagi do wydania LLVM i uwagi do wydania Clang.
- Zaktualizowano równoległy zestaw narzędzi Dev 16.11 C++ do wersji 14.29.30145.00. Najnowsza wersja zestawu narzędzi Dev 16.11 C++ zawiera ważne poprawki błędów, w tym naprawianie wszystkich pozostałych raportów błędów C++20. Aby uzyskać więcej informacji na temat poprawek błędów, w tym raportów o błędach języka C++20 w programie Dev 16.11, zobacz Informacje o wersji programu Visual Studio 2019 w wersji 16.11.14.
- Wprowadzono różne ulepszenia dotyczące pracy z modułami C++ w edytorze. Nieustannie pracujemy nad poprawą jakości doświadczenia, ale zachęcamy do wypróbowania funkcjonalności w wersji 17.3. Zgłoś pozostałe problemy za pośrednictwem społeczności deweloperów.
Co nowego w języku C++ w programie Visual Studio w wersji 17.2
Wydany w maju 2022 r.
| Aby uzyskać więcej informacji o | Zobacz |
|---|---|
| Co nowego dla deweloperów języka C++ | Program Visual Studio 2022 17.2 jest teraz dostępny |
| Biblioteka standardowa (STL) zintegrowała raporty dotyczące usterek C++20, funkcje C++23, rozwiązania problemów Grupy Roboczej ds. Języka (LWG), ulepszenia wydajności, poprawione zachowanie oraz naprawione błędy. | Dziennik zmian STL 17.2 |
| Nowe funkcje w środowisku IDE programu Visual Studio 17.2 | Informacje o wersji 17.2 programu Visual Studio 2022 |
| Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.2 | Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 |
Częściowa lista nowych funkcji w wersji 17.2:
- Dodano obsługę kompilatora dla funkcji deducing
thisjęzyka C++23 dostępnej w/std:c++latestramach opcji . - Dodano obsługę funkcji IntelliSense dla funkcji deducing
thisjęzyka C++23 iif consteval. - Dodano obsługę wbudowanych nazw parametrów i wskazówek typów, które można przełączać, naciskając Alt+F1 lub dwukrotnie naciskając Ctrl. To zachowanie można dostosować w obszarze Narzędzia > Opcje > Edytory > tekstów C/C++ > IntelliSense.
- Dodano obsługę eksperymentalną modułów języka C++20 w projektach CMake. Ta obsługa jest obecnie dostępna tylko w generatorze programu Visual Studio (MSBuild).
- W wersji 17.1 wprowadziliśmy widoki rejestrów urządzeń peryferyjnych i RTOS dla programistów systemów wbudowanych. Nadal ulepszamy możliwości tych widoków dzięki ulepszeniom użyteczności w wersji 17.2:
- Okno narzędzia RTOS jest teraz domyślnie ukryte. Zapobiega to wyświetlaniu okna narzędzi z komunikatami o błędach, które nie są istotne, gdy nie używasz systemu RTOS.
- Po dwukrotnym kliknięciu obiektu RTOS w oknie narzędzia zostanie dodany zegarek dla obiektu.
- Po wybraniu wartości początkowych i końcowych wskaźnika stosu w oknie narzędzia RTOS zostanie on otwarty w oknie pamięci.
- Dodano rozpoznawanie wątków dla obiektów docelowych urządzeń w oknie stosu wywołań.
- Użytkownicy mogą teraz wybrać ikonę pinezki obok urządzeń peryferyjnych, rejestrów lub pól, aby przypiąć je do góry widoku peryferyjnego.
- Dodano implementacje pozostałych raportów wad języka C++20 (nazywanych również backportami). Wszystkie funkcje języka C++20 są teraz dostępne pod opcją
/std:c++20. Aby uzyskać więcej informacji na temat wdrożonych backportów, zobacz vs 2022 Changelog w repozytorium Microsoft/STL GitHub oraz wpis w blogu STL/std:c++20STL STL MSVC. - Dodaliśmy różne funkcje biblioteki języka C++23 dostępne w opcji
/std:c++latest. Aby uzyskać więcej informacji na temat nowych funkcji, zobacz dziennik zmian STL Repo. - Ulepszono wydajność początkowego indeksowania w C++ nawet o 20%, w zależności od głębokości grafu zależności.
Co nowego w języku C++ w programie Visual Studio w wersji 17.1
Wydany w lutym 2022 r.
| Aby uzyskać więcej informacji o | Zobacz |
|---|---|
| Co nowego dla deweloperów języka C++ | Program Visual Studio 2022 17.1 jest teraz dostępny! |
| Funkcje C++23 scalone z biblioteką standardową (STL), decyzje dotyczące rozwiązania problemów Grupy Roboczej Języka (LWG), poprawa wydajności, lepsza funkcjonalność i naprawione błędy | Dziennik zmian STL 17.1 |
| Nowe funkcje w środowisku IDE programu Visual Studio 17.1 | Informacje o wersji 17.1 programu Visual Studio 2022 |
| Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.1 | Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 |
Częściowa lista nowych funkcji w wersji 17.1:
- Dodano nowy szablon Konfigurowanie ustawień wstępnych do konfigurowania i kompilowania projektów CMake w zdalnym systemie macOS za pomocą polecenia
CMakePresets.json. Można również uruchomić obiekty docelowe narzędzia CMake w zdalnym systemie macOS, a następnie debugować zdalnie w debugerze programu Visual Studio wspieranym przez usługę GDB lub LLDB. - Teraz można debugować zrzuty pamięci na zdalnym systemie macOS za pomocą programu Visual Studio oraz narzędzi LLDB lub GDB.
- Wersje
ClangiLLVMdostarczane z Visual Studio są uaktualniane do wersji 13. - Integracja z CMake w Visual Studio jest aktywna tylko wtedy, gdy element
CMakeLists.txtjest rozpoznawany w katalogu głównym otwartego obszaru roboczego. Jeśli elementCMakeLists.txtzostanie zidentyfikowany na innym poziomie obszaru roboczego, zostaniesz poproszony o aktywowanie integracji CMake z Visual Studio za pomocą powiadomienia. - Nowe widoki, które umożliwiają inspekcję i interakcję z rejestrami peryferyjnymi na mikrokontrolerach oraz obiektami systemów operacyjnych czasu rzeczywistego (RTOS), dostępne poprzez Debug>Windows>Embedded Registers.
- Dodano nowy widok wątków dla projektów RTOS, dostępny za pośrednictwem Debug i Windows oraz RTOS Objects. Aby uzyskać więcej informacji, zobacz Embedded Software Development in Visual Studio (Tworzenie oprogramowania osadzonego w programie Visual Studio).
Co nowego w języku C++ w programie Visual Studio w wersji 17.0
Wydany w listopadzie 2021 r.
| Aby uzyskać więcej informacji o | Zobacz |
|---|---|
| Nowe funkcje w środowisku IDE programu Visual Studio 17.0 | Informacje o wersji 17.0 programu Visual Studio 2022 |
| Funkcje biblioteki standardowej (STL) scalone z cechami C++23 i C++26, raporty z defektami C++20, rozwiązania kwestii zgłaszanych przez Language Working Group (LWG), ulepszenia wydajności, ulepszone zachowanie i naprawione błędy | Dziennik zmian STL 17.0 |
| Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.0 | Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 17.10 |
Omówienie niektórych nowych funkcji w programie Visual Studio 2022 w wersji 17.0:
- Środowisko IDE programu Visual Studio,
devenv.exe, jest teraz natywną aplikacją 64-bitową. - Zestaw narzędzi MSVC domyślnie używa skrótu SHA-256 dla źródła w rekordach debugowania. Wcześniej zestaw narzędzi domyślnie używał rozwiązania MD5 do tworzenia skrótów źródłowych.
- Narzędzia kompilacji w wersji 143 są teraz dostępne za pośrednictwem instalatora programu Visual Studio i w samodzielnych narzędziach kompilacji
.
Dynamiczne przeładowywanie dla natywnego C++
- Hot Reload dla C++ umożliwia wprowadzanie wielu rodzajów poprawek w kodzie działającej aplikacji i ich zastosowanie bez potrzeby przerywania jej działania za pomocą punktu przerwania.
W programie Visual Studio 2022 po uruchomieniu aplikacji w debugerze możesz użyć przycisku Przeładowywanie na gorąco, aby zmodyfikować aplikację, gdy jest ona nadal uruchomiona. To doświadczenie jest obsługiwane przez funkcję Edytuj i kontynuuj. Aby uzyskać więcej informacji na temat obsługiwanych edycji, zobacz Edytowanie i kontynuowanie (C++).
- Przeładowywanie na gorąco obsługuje projekty CMake i Open Folder.
Obsługa protokołu WSL2
- Teraz można kompilować i debugować natywnie w systemie WSL2 bez ustanawiania połączenia SSH. Obsługiwane są zarówno międzyplatformowe projekty CMake, jak i projekty systemu Linux oparte na programie MSBuild.
Ulepszona obsługa narzędzia CMake
Uaktualniono wersję narzędzia CMake dostarczoną z programem Visual Studio do wersji 3.21. Aby uzyskać więcej informacji na temat dostępnych funkcji w tej wersji, zobacz notatki o wersji narzędzia CMake 3.21.
Strony przeglądu narzędzia CMake są aktualizowane w celu obsługi programu
CMakePresets.json.Teraz można konfigurować i kompilować projekty CMake za pomocą narzędzia CMake 3.21 i
CMakePresets.jsonv3.Teraz Visual Studio obsługuje opcję
buildPresets.targetswCMakePresets.json. Ta opcja umożliwia utworzenie podzestawu obiektów docelowych w projekcie CMake.Menu Project w projektach CMake jest usprawnione i uwidacznia opcje "Usuń pamięć podręczną i ponownie skonfiguruj" i "Wyświetl pamięć podręczną".
Zaimplementowano opcję kompilatora
/scanDependencies, aby wyświetlić listę zależności modułów języka C++20 dla projektów CMake zgodnie z opisem w P1689R5. Jest to krok w kierunku obsługi tworzenia projektów opartych na modułach za pomocą narzędzia CMake i pracujemy nad ukończeniem tej obsługi w kolejnych wersjach.
Ulepszenia biblioteki standardowej
Wybrane ulepszenia biblioteki standardowej (STL) wyróżniono tutaj. Aby uzyskać kompleksową listę nowych funkcji, zmian, poprawek błędów i ulepszeń wydajności, zobacz dziennik zmian zespołu STL.
- Dodano wizualizatory debugowania w celu poprawienia sposobu wyświetlania następujących typów:
source_location,bind_front(),u8string(i ich iteratorów),default_sentinel_t,unreachable_sentinel_t,ranges::empty_view,ranges::single_view,ranges::iota_view(i jego iteratora/strażnika),ranges::ref_view,thread,thread::id,jthreadifilesystem::path. - Dodano
[[nodiscard]]do rodziny funkcji wstoi()oraz do różnych funkcji w<string>, takich jak funkcje składowe<locale>,collate, oraz rodzinyhas_facet()iisalnum()tolower(). -
P0980R1 wykonane
std::stringconstexprw programie VS 2019 16.10. Teraz obsługiwane w języku Clang. -
P1004R2 wykonane
std::vectorconstexprw programie VS 2019 16.10. Teraz obsługiwane w języku Clang.
Wyróżnione funkcje języka C++23
-
P1048R1 Dodano
is_scoped_enumnową właściwość standardowej biblioteki C++, która wykrywa, czy typ jest wyliczeniem o określonym zakresie. -
out_ptr()P1132R7 ,inout_ptr() -
P1679R3
contains()dlabasic_stringibasic_string_view -
to_underlying()P1682R3 dla wyliczeń -
P2162R2 Zezwalaj na dziedziczenie z
std::variant - P2166R1 Zakaz konstruowania i
basic_stringzbasic_string_view. Ta zmiana jest zmianą powodującą niezgodność źródła. Kod, który wcześniej miał niezdefiniowane zachowanie w czasie wykonywania, jest teraz odrzucany z błędami kompilatora. -
P2186R2 Usunięto obsługę odśmiecania pamięci. Ta zmiana usuwa
declare_reachable,undeclare_reachable,declare_no_pointers,undeclare_no_pointers,get_pointer_safety. Wcześniej te funkcje nie miały wpływu.
Wyróżnione ulepszenia wydajności
-
<format>teraz wykrywa, kiedy zapisuje do obiektuback_insert_iteratordlabasic_stringlubvector, i wykonuje szybsze wywołanie doinsert()naend()kontenera. - Poprawiliśmy wydajność
std::find()istd::count()dlavector<bool>19-krotnie i 26-krotnie (razy, a nie procent). - Poprawiliśmy wydajność
std::count()dlavector<bool> -
std::bytema taką samą wydajność jakunsigned charwreverse()ivariant::swap()
Obsługa oprogramowania Clang i LLVM
Narzędzia LLVM dostarczane z programem Visual Studio zostały zaktualizowane do wersji LLVM 12. Aby uzyskać więcej informacji, zobacz notatki o wydaniu LLVM.
Obsługa Clang-cl została zaktualizowana do LLVM 12.
Teraz można debugować procesy uruchomione w systemie zdalnym z poziomu programu Visual Studio przy użyciu usługi LLDB.
C++ AMP uznane za przestarzałe
- Nagłówki C++ AMP są teraz przestarzałe. Uwzględnienie
<amp.h>w projekcie C++ generuje błędy kompilacji. Aby wyciszyć błędy, zdefiniuj wartość_SILENCE_AMP_DEPRECATION_WARNINGS. Aby uzyskać więcej informacji, zobacz nasze linki dotyczące wycofywania AMP.
Ulepszenia funkcji IntelliSense
- Wprowadziliśmy ulepszenia w funkcjonalności IntelliSense dla języka C++ w zakresie nawigacji i wyróżniania składni dla typów z zaimportowanych modułów oraz jednostek nagłówkowych. IntelliSense to dla nas aktywny obszar inwestycji. Pomóż nam ulepszyć: podziel się swoją opinią na temat społeczności deweloperów, korzystając z pomocy >wyślij opinię.
- Poprawiliśmy wydajność funkcji IntelliSense języka C++ poprzez optymalizację wykorzystania pamięci podręcznej nagłówków oraz dostępu do bazy danych symboli, co zapewnia lepsze czasy ładowania umożliwiające szybsze przystąpienie do pracy nad kodem.
- Funkcja Linter kodu IntelliSense dla języka C++ jest teraz domyślnie włączona, zapewniając błyskawiczne sugestie podczas wpisywania oraz propozycje poprawek typowych błędów kodu.
- Funkcja IntelliSense języka C++ dla projektów CMake działa teraz w przypadku używania ustawień wstępnych z nazwą wyświetlaną.
Aktualizacje obciążeń języka C++
- Zaktualizowano do wersji NDK r21 LTS w obciążeniu C++ Mobile Development .
- Obciążenie Tworzenie gier przy użyciu C++ instaluje teraz najnowszy Unreal Engine z obsługą Visual Studio 2022.
Ulepszenia analizy kodu
- Analiza kodu teraz wymusza, że wartości zwracane przez funkcje z adnotacjami
_Check_return_lub_Must_inspect_result_muszą być sprawdzane. - Wykrywanie dereferencji wskaźnika null zostało ulepszone w naszych narzędziach do analizy kodu.
- Dodano obsługę analizy
gsl::not_nullkodu. - Obsługa biblioteki Libfuzzer w ramach opcji kompilatora
/fsanitize=fuzzer.
Informacje o wydaniach dla starszych wersji
Dostępne są również informacje o wersji dla starszych wersji języka C++:
- Aby uzyskać informacje na temat nowości w języku C++ w programie Visual Studio 2019, zobacz Co nowego w języku C++ w programie Visual Studio 2019.
- Aby uzyskać informacje na temat nowości w języku C++ w programie Visual Studio 2017, zobacz Co nowego w języku C++ w programie Visual Studio 2017.
- Aby uzyskać informacje na temat nowości we wcześniejszych wersjach, zobacz Visual C++ What's new 2003 to 2015 (Co nowego w wersji 2003–2015).
Znane problemy
C++ IntelliSense
Aby uzyskać więcej informacji na temat innych otwartych problemów i dostępnych obejść dla języka C++ w programie Visual Studio 2022, zobacz listę problemów społeczności deweloperów języka C++.
Opinie i sugestie
Z przyjemnością poznamy opinie użytkowników. Możesz zgłosić problem lub zasugerować funkcję, korzystając z ikony "Wyślij opinię" w prawym górnym rogu instalatora lub środowiska IDE programu Visual Studio albo wybierając Pomoc, a następnie Wyślij opinię. Problemy można śledzić przy użyciu społeczności deweloperów programu Visual Studio, w której można dodawać komentarze lub znajdować rozwiązania. Możesz też uzyskać bezpłatną pomoc dotyczącą instalacji za pośrednictwem naszej pomocy technicznej przez czat na żywo.
Blogi
Skorzystaj ze szczegółowych informacji i zaleceń dostępnych w witrynie Blogi dla deweloperów firmy Microsoft, aby być na bieżąco ze wszystkimi nowymi wersjami. Blogi zawierają szczegółowe wpisy dotyczące szerokiej gamy funkcji. Blog zespołu języka C++ i blog programu Visual Studio są szczególnie interesujące.