Co nowego w języku Visual C++ w programie Visual Studio 2017What's New for Visual C++ in Visual Studio 2017

Program Visual Studio 2017 obejmuje wiele aktualizacji i poprawek dotyczących środowiska Visual C++.Visual Studio 2017 brings many updates and fixes to the Visual C++ environment. Już firma Microsoft usunęła ponad 250 usterek i zgłoszonych problemów w kompilatorze i narzędziach, wiele przesłanych przez klientów za pośrednictwem Zgłoś Problem i sugestię opcji w obszarze Prześlij opinię .We've fixed over 250 bugs and reported issues in the compiler and tools, many submitted by customers through the Report a Problem and Provide a Suggestion options under Send Feedback. Dziękujemy za zgłaszanie usterek!Thank you for reporting bugs! Aby uzyskać więcej informacji na temat what's new in całego programu Visual Studio, odwiedź What's new in Visual Studio 2017.For more information on what's new in all of Visual Studio, please visit What's new in Visual Studio 2017.

kompilator C++C++ compiler

Ulepszenia zgodności języka C++C++ conformance improvements

W tej wersji zaktualizowaliśmy standardową bibliotekę i kompilator języka C++ o rozszerzoną obsługę funkcji języka C ++ 11 i C ++ 14, a także wstępną obsługę niektórych funkcji, które mają zostać uwzględnione w standardowym języku C ++ 17.In this release, we've updated the C++ compiler and standard library with enhanced support for C++11 and C++14 features, as well as preliminary support for certain features expected to be in the C++17 standard. Aby uzyskać szczegółowe informacje, zobacz ulepszenia zgodności języka C++ w programie Visual Studio 2017.For detailed information, see C++ Conformance Improvements in Visual Studio 2017.

Visual Studio 2017 w wersji 15.5: kompilator obsługuje około 75% funkcji, które są nowością w programie C ++ 17, w tym wiązania strukturyzowane, constexpr lambdy, if constexpr, zmienne wbudowane, złożyć wyrażenia i dodawanie noexcept do system typów.Visual Studio 2017 version 15.5: The compiler supports about 75% of the features that are new in C++17, including structured bindings, constexpr lambdas, if constexpr, inline variables, fold expressions, and adding noexcept to the type system. Są one dostępne w obszarze /STD: c ++ 17 opcji.These are available under the /std:c++17 option. Aby uzyskać więcej informacji, zobacz ulepszenia zgodności języka C++ w programie Visual Studio 2017For more information, see C++ Conformance Improvements in Visual Studio 2017

Visual Studio 2017 w wersji 15.7: w wersji 15.7 programu Visual Studio, zestaw narzędzi kompilatora MSVC jest teraz zgodny ze standardem C++.Visual Studio 2017 version 15.7: The MSVC compiler toolset in Visual Studio version 15.7 now conforms with the C++ Standard. Aby uzyskać więcej informacji, zobacz Announcing: MSVC jest zgodny ze standardem C++ i Visual zgodność języka C++.For more information, see Announcing: MSVC Conforms to the C++ Standard and Visual C++ Language Conformance.

Nowe opcje kompilatoraNew compiler options

  • / permissive-: Włącz wszystkie rygorystyczne standardy zgodność-opcje kompilatora i Wyłącz większość rozszerzeń kompilatora specyficzne dla firmy Microsoft (ale nie __declspec(dllimport), na przykład)./permissive-: Enable all strict standards conformance compiler options and disable most Microsoft-specific compiler extensions (but not __declspec(dllimport), for example). Ta opcja jest włączona domyślnie w programie Visual Studio 2017 w wersji 15.5.This option is on by default in Visual Studio 2017 version 15.5. / Permissive- tryb zgodności obejmuje obsługę dwufazowe wyszukiwanie nazw.The /permissive- conformance mode includes support for two-phase name lookup. Aby uzyskać więcej informacji, zobacz ulepszenia zgodności języka C++ w programie Visual Studio 2017.For more information, see C++ Conformance Improvements in Visual Studio 2017.

  • / Diagnostics: Włącz wyświetlanie numer wiersza, numer wiersza i kolumny, lub numer wiersza i kolumny i karetki w ramach linii kodu, gdzie znaleziono diagnostycznych błąd lub ostrzeżenie./diagnostics: Enable display of the line number, the line number and column, or the line number and column and a caret under the line of code where the diagnostic error or warning was found.

  • fastlink: Włącz do 30% szybciej konsolidowania przyrostowego czasu (w porównaniu. Visual Studio 2015), kopiując nie wszystkie informacje w pliku PDB debugowania./debug:fastlink: Enable up to 30% faster incremental link times (vs. Visual Studio 2015) by not copying all debug information into the PDB file. Plik PDB wskazuje zamiast tego informacje debugowania dla plików obiektów i biblioteki, użyty do utworzenia pliku wykonywalnego.The PDB file instead points to the debug information for the object and library files used to create the executable. Zobacz C++ szybciej tworzyć cyklu w programie VS "15" z fastlink i zalecenia dotyczące szybkości C++ kompilacje w programie Visual Studio.See Faster C++ build cycle in VS "15" with /Debug:fastlink and Recommendations to speed C++ builds in Visual Studio.

  • Program Visual Studio 2017 umożliwia używanie /SDL z / await.Visual Studio 2017 allows using /sdl with /await. Firma Microsoft usunęła usunęliśmy ograniczenie koprocedur.We removed the /RTC limitation with Coroutines.

    Visual Studio 2017 w wersji 15.3:Visual Studio 2017 version 15.3:

  • / STD: c ++ 14 i/STD: c ++ najnowsze: te opcje kompilatora umożliwiają wyrazić zgodę na określonych wersji ISO C++ języku programowania w projekcie./std:c++14 and /std:c++latest: These compiler options enable you to opt-in to specific versions of the ISO C++ programming language in a project. Nowy projekt funkcje warstwy standardowa jest chroniony przez większość /STD: c ++ najnowsze opcji.Most of the new draft standard features are guarded by the /std:c++latest option.

  • / STD: c ++ 17 udostępnia zestaw funkcji C ++ 17 implementowane przez kompilator./std:c++17 enables the set of C++17 features implemented by the compiler. Ta opcja powoduje wyłączenie kompilatora i biblioteki standardowej obsługi funkcji, które zostały zmienione lub nowych wersjach pracy roboczą i wad aktualizacje C++ Standard po C ++ 17.This option disables compiler and standard library support for features that are changed or new in versions of the Working Draft and defect updates of the C++ Standard after C++17. Aby włączyć te funkcje, użyj /STD: c ++ najnowsze.To enable those features, use /std:c++latest.

Generowanie kodu zabezpieczeń, diagnostyki i przechowywanie wersjiCodegen, security, diagnostics and versioning

Ta wersja oferuje kilka ulepszeń w optymalizacji, generowania kodu, przechowywanie wersji zestawu narzędzi i diagnostyki.This release brings several improvements in optimization, code generation, toolset versioning, and diagnostics. Do istotnych ulepszeń należą:Some notable improvements include:

  • Ulepszone generowanie kodu pętli: obsługa automatycznej wektoryzacji dzielenia stałych liczb całkowitych, lepsza identyfikacja wzorców funkcji memset.Improved code generation of loops: Support for automatic vectorization of division of constant integers, better identification of memset patterns.
  • Ulepszone zabezpieczenia kodu: ulepszona emisja diagnostyki kompilatora przepełnienia buforu, a /GUARD: CF teraz osłony instrukcje switch, które generują tabele przeskoków.Improved code security: Improved emission of buffer overrun compiler diagnostics, and /guard:cf now guards switch statements that generate jump tables.
  • Przechowywanie wersji: Wartość wbudowane makro preprocesora _MSC_VER jest teraz monotonicznie aktualizowana przy każdej aktualizacji zestawu narzędzi Visual C++.Versioning: The value of the built-in preprocessor macro _MSC_VER is now being monotonically updated at every Visual C++ toolset update. Aby uzyskać więcej informacji, zobacz Visual C++ w wersji kompilatora.For more information, see Visual C++ Compiler Version.
  • Nowy układ narzędzi: kompilator i narzędzia powiązanych kompilacji ma nową strukturę lokalizacji i katalog na komputerze deweloperskim.New toolset layout: The compiler and related build tools have a new location and directory structure on your development machine. Nowy układ umożliwia instalacje side-by-side wielu wersji kompilatora.The new layout enables side-by-side installations of multiple versions of the compiler. Aby uzyskać więcej informacji, zobacz układ narzędzia kompilatora w programie Visual Studio "15".For more information, see Compiler Tools Layout in Visual Studio "15".
  • Ulepszona diagnostyka: W oknie danych wyjściowych zawiera obecnie kolumnę gdzie występuje błąd.Improved diagnostics: The output window now shows the column where an error occurs. Aby uzyskać więcej informacji, zobacz ulepszenia diagnostyki kompilatora języka C++ w programie VS "15" Preview 5.For more information, see C++ compiler diagnostics improvements in VS "15" Preview 5.
  • Korzystając z procedur wspólnych eksperymentalne słowo kluczowe uzyskanie (dostępne w obszarze / await opcja) została usunięta.When using co-routines, the experimental keyword yield (available under the /await option) has been removed. Zaktualizować swój kod w celu zastosowania co_yield zamiast tego.Your code should be updated to use co_yield instead. Więcej informacji można znaleźć na blogu zespołu Visual C++.For more information, see the Visual C++ Team blog.

Visual Studio 2017 w wersji 15.3:Visual Studio 2017 version 15.3:

Dodatkowe ulepszenia diagnostyki w kompilatorze.Additional improvements to diagnostics in the compiler. Aby uzyskać więcej informacji, zobacz ulepszenia diagnostyki w programie Visual Studio 2017 15.3.0.For more information, see Diagnostic Improvements in Visual Studio 2017 15.3.0.

Visual Studio 2017 w wersji 15.5:Visual Studio 2017 version 15.5:

Visual C++ runtime wydajności w dalszym ciągu poprawić ze względu na lepszą jakość wygenerowanego kodu.Visual C++ runtime performance continues to improve due to better generated code quality. Oznacza to, że można po prostu kompilację kodu, a aplikacja działa szybciej.This means that you can simply recompile your code, and your app runs faster. Niektóre optymalizacje kompilatora są całkiem nowe, takich jak wektoryzację magazynów warunkowych wartości skalarnych, łączenie wywołań sin(x) i cos(x) w nowym sincos(x)i eliminowania nadmiarowe instrukcji od optymalizatora architektury SSA.Some of the compiler optimizations are brand new, such as the vectorization of conditional scalar stores, the combining of calls sin(x) and cos(x) into a new sincos(x), and the elimination of redundant instructions from the SSA Optimizer. Inne optymalizacje kompilatora są ulepszeniami istniejących funkcji, takich jak heurystyki Diagnostyka wektoryzowania automatycznego wyrażeń warunkowych, lepszej optymalizacji pętli i generowanie kodu minimalnej/maksymalnej float.Other compiler optimizations are improvements to existing functionality such as vectorizer heuristics for conditional expressions, better loop optimizations, and float min/max codegen. Konsolidator ma nowy i szybsze /OPT: ICF wdrożenia, co może skutkować 9% link szybsze czasu, a inne poprawki wydajności w łączenie przyrostowe.The linker has a new and faster /OPT:ICF implementation which can result in up to 9% link time speedups, and there are other perf fixes in incremental linking. Aby uzyskać więcej informacji, zobacz od (optymalizacje) i /incremental (Link przyrostowo).For more information, see /OPT (Optimizations) and /INCREMENTAL (Link Incrementally).

Visual C++ obsługuje rozszerzenia AVX-512 firmy Intel, w tym instrukcje dotyczące długości wektora, które udostępniają nowe funkcje w AVX-512 do rejestrach 128 - i 256-bitowy.Visual C++ supports Intel's AVX-512, including the Vector Length instructions that bring new functions in AVX-512 to 128- and 256-bit wide registers.

/Zc:noexceptTypes- opcji może służyć do przywrócenia do języka C ++ 14 wersji noexcept podczas korzystania z języka C ++ 17 trybu ogólnie rzecz biorąc.The /Zc:noexceptTypes- option can be used to revert to the C++14 version of noexcept while using C++17 mode in general. Dzięki temu można zaktualizować kodu źródłowego są zgodne z C ++ 17, bez konieczności ponownego zapisania wszystkie swoje throw() kodu w tym samym czasie.This enables you to update your source code to conform to C++17 without having to rewrite all your throw() code at the same time. Aby uzyskać więcej informacji, zobacz usuwanie specyfikacji wyjątków dynamicznych i noexcept.For more information, see Dynamic exception specification removal and noexcept.

Visual Studio 2017 w wersji 15.7:Visual Studio 2017 version 15.7:

Ulepszenia standardowej biblioteki języka C++C++ Standard Library improvements

  • Drobne basic_string _ITERATOR_DEBUG_LEVEL != 0 ulepszenia diagnostyki.Minor basic_string _ITERATOR_DEBUG_LEVEL != 0 diagnostics improvements. Wyzwolenie kontroli IDL w maszynie ciągu zgłasza teraz określone zachowanie, które spowodowało wyzwolenie.Tripping an IDL check in string machinery will now report the specific behavior that caused the trip. Na przykład zamiast komunikatu „iterator ciągu nie umożliwia wyłuskiwania” otrzymasz komunikat „nie można wyłuskać iteratora ciągu, ponieważ jest on poza zakresem (np. iterator końca)”.For example, instead of "string iterator not dereferencable" you'll get "cannot dereference string iterator because it is out of range (e.g. an end iterator)".
  • Ulepszenie wydajności: wprowadzone basic_string::find(char) przeciąża wywołanie tylko traits::find po.Performance improvement: made basic_string::find(char) overloads only call traits::find once. Wcześniej było to wdrożone jako ogólne wyszukiwanie ciągu o długości 1.Previously this was implemented as a general string search for a string of length 1.
  • Ulepszenie wydajności: basic_string::operator== sprawdza rozmiar ciągu przed porównaniem zawartości ciągów.Performance improvement: basic_string::operator== now checks the string's size before comparing the strings' contents.
  • Ulepszenie wydajności: Usunięto formant sprzężenia w basic_string, który był trudny Optymalizator kompilatora do analizy.Performance improvement: removed control coupling in basic_string, which was difficult for the compiler optimizer to analyze. Należy pamiętać, że dla wszystkich krótkich ciągów wywoływanie reserve nadal ma niezerowy koszt bezczynności.Note that for all short strings, calling reserve still has a nonzero cost to do nothing.
  • Dodaliśmy <wszelkie>, <string_view>, apply(), make_from_tuple().We added <any>, <string_view>, apply(), make_from_tuple().
  • std::vector został sprawdzony pod kątem prawidłowości i wydajności: Tworzenie aliasów podczas wstawiania i umieszczanie jest teraz poprawnie obsługiwane jako wymagane przez Standard, gwarancja silnego wyjątku jest teraz udostępniany gdy jest to wymagane przez Standard za pomocą move_if_noexcept() oraz innych logik a Wstawianie/umieszczanie wykonuje mniej operacji na elementach.std::vector has been overhauled for correctness and performance: aliasing during insertion and emplacement is now correctly handled as required by the Standard, the strong exception guarantee is now provided when required by the Standard via move_if_noexcept() and other logic, and insertion/emplacement perform fewer element operations.
  • Standardowa biblioteka C++ unika obecnie wyłuskiwania swobodnych pustych wskaźników.The C++ Standard Library now avoids dereferencing null fancy pointers.
  • Dodano <opcjonalne>, <wariant>, shared_ptr::weak_type, i <cstdalign>.Added <optional>, <variant>, shared_ptr::weak_type, and <cstdalign>.
  • Włączone C ++ 14 constexpr w min(initializer_list), max(initializer_list), i minmax(initializer_list), i min_element(), max_element(), i minmax_element().Enabled C++14 constexpr in min(initializer_list), max(initializer_list), and minmax(initializer_list), and min_element(), max_element(), and minmax_element().
  • Ulepszone weak_ptr::lock() wydajności.Improved weak_ptr::lock() performance.
  • Naprawiono std::promise operator przypisania przenoszenia, który mógł wcześniej spowodować zablokowanie kodu.Fixed the std::promise move assignment operator, which previously could cause code to block forever.
  • Naprawiono błędy kompilatora przy użyciu atomic<T*> niejawnej konwersji T*.Fixed compiler errors with the atomic<T*> implicit conversion to T*.
  • pointer_traits<Ptr> wykrywa teraz prawidłowo Ptr::rebind<U>.pointer_traits<Ptr> now correctly detects Ptr::rebind<U>.
  • Naprawiono Brak const kwalifikator w move_iterator operator odejmowania.Fixed a missing const qualifier in the move_iterator subtraction operator.
  • Naprawiono ciche Generowanie nieprawidłowego kodu dla stanowych przydzielających definiowanych przez użytkownika żądających propagate_on_container_copy_assignment i propagate_on_container_move_assignment.Fixed silent bad codegen for stateful user-defined allocators requesting propagate_on_container_copy_assignment and propagate_on_container_move_assignment.
  • atomic<T> Toleruje obecnie przeciążony operator&().atomic<T> now tolerates overloaded operator&().
  • Aby zwiększyć przepływność kompilatora, nagłówki standardowej biblioteki języka C++ unikają teraz, włączania deklaracji dla zbędnych funkcji wewnętrznych kompilatora.To increase compiler throughput, C++ Standard Library headers now avoid including declarations for unnecessary compiler intrinsics.
  • Nieco Ulepszona diagnostyka kompilatora dla niepoprawne bind() wywołania.Slightly improved compiler diagnostics for incorrect bind() calls.
  • Zwiększona wydajność std::string i std::wstring konstruktorów przenoszenia więcej niż trzy razy.Improved the performance of std::string and std::wstring move constructors by more than three times.

Aby uzyskać pełną listę biblioteki standardowej Zobacz improvments standardowe biblioteki poprawki w programie VS 2017 RTM.For a complete list of Standard Library improvments see the Standard Library Fixes In VS 2017 RTM.

Visual Studio 2017 w wersji 15.3Visual Studio 2017 version 15.3

Funkcji c ++ 17C++17 features

Kilka dodatkowych funkcji C ++ 17 zostały zaimplementowane.Several additional C++17 features have been implemented. Aby uzyskać więcej informacji, zobacz Visual zgodność języka C++.For more information, see Visual C++ Language Conformance.

Inne nowe funkcjeOther new features

  • Zaimplementowane P0602R0 "variant i opcjonalne powinien Propagacja triviality kopiowania/przenoszenia".Implemented P0602R0 "variant and optional should propagate copy/move triviality".
  • Standardowa biblioteka oficjalnie Toleruje obecnie dynamiczne RTTI wyłączone za pomocą trakcie opcji.The Standard Library now officially tolerates dynamic RTTI being disabled via the /GR- option. Zarówno dynamic_pointer_cast() i rethrow_if_nested() natury wymagają dynamic_cast, więc biblioteka standardowa teraz oznacza je jako =delete w obszarze trakcie.Both dynamic_pointer_cast() and rethrow_if_nested() inherently require dynamic_cast, so the Standard Library now marks them as =delete under /GR-.
  • Nawet gdy RTTI dynamicznych została wyłączona za pomocą trakcie, "statyczne RTTI" (w formie typeid(SomeType)) są nadal dostępne i obsługuje kilka składników biblioteki standardowej.Even when dynamic RTTI has been disabled via /GR-, "static RTTI" (in the form of typeid(SomeType)) is still available and powers several Standard Library components. Biblioteka standardowa obsługuje teraz, wyłączenie to zbyt, za pośrednictwem /D_HAS, Health_STATYCZNE_RTTI = 0.The Standard Library now supports disabling this too, via /D_HAS_STATIC_RTTI=0. Należy zauważyć, że spowoduje to wyłączenie std::any, target() i target_type() funkcje elementów członkowskich std::functioni get_deleter() funkcji elementu członkowskiego friend std::shared_ptr i std::weak_ptr.Note that this will disable std::any, the target() and target_type() member functions of std::function, and the get_deleter() friend member function of std::shared_ptr and std::weak_ptr.

Poprawność poprawki w programie Visual Studio 2017 w wersji 15.3Correctness fixes in Visual Studio 2017 version 15.3

  • Standardowa clamp teraz kontenery biblioteki ich max_size() do numeric_limits<difference_type>::max() zamiast max() z size_type.Standard Library containers now clamp their max_size() to numeric_limits<difference_type>::max() rather than the max() of size_type. Gwarantuje to, że wynik distance() na iteratorach z tego kontenera jest stałego w typie zwracanym distance().This ensures that the result of distance() on iterators from that container is representable in the return type of distance().
  • Naprawiono Brak specjalizacji auto_ptr<void>.Fixed missing specialization auto_ptr<void>.
  • for_each_n(), generate_n(), I search_n() algorytmy poprzednio kompilacja nie powiodła się Jeśli długość argumentu nie jest typem całkowitym; teraz próba przekonwertować długości niecałkowitoliczbowego Iteratory difference_type.The for_each_n(), generate_n(), and search_n() algorithms previously failed to compile if the length argument was not an integral type; they now attempt to convert non-integral lengths to the iterators' difference_type.
  • normal_distribution<float> już nie emituje ostrzeżenia w standardowej bibliotece o zawężanie z podwójnej precyzji do liczb zmiennoprzecinkowych.normal_distribution<float> no longer emits warnings inside the Standard Library about narrowing from double to float.
  • Rozwiązano niektóre basic_string działań, które zostały porównanie z npos zamiast max_size() podczas sprawdzania, czy przekroczono maksymalny rozmiar.Fixed some basic_string operations which were comparing with npos instead of max_size() when checking for maximum size overflow.
  • condition_variable::wait_for(lock, relative_time, predicate) oczekiwania przez cały czas względne w przypadku wznawiania fałszywe.condition_variable::wait_for(lock, relative_time, predicate) would wait for the entire relative time in the event of a spurious wake. Teraz po upływie jednego interwał względne czasu.Now it will wait for only a single interval of the relative time.
  • future::get() teraz unieważnia future, ponieważ wymaga standard.future::get() now invalidates the future, as the standard requires.
  • iterator_traits<void *> kiedyś poważny błąd, ponieważ próbowała ona formularza void&; teraz prawidłowo staje się pustą strukturę, zezwalając na używanie iterator_traits w "jest iteratorem" SFINAE warunków.iterator_traits<void *> used to be a hard error because it attempted to form void&; it now cleanly becomes an empty struct to allow use of iterator_traits in "is iterator" SFINAE conditions.
  • Kilka ostrzeżeń zgłaszanych przez Clang - wsystem — nagłówki zostały rozwiązane.Some warnings reported by Clang -Wsystem-headers were fixed.
  • Również stała "Specyfikacja wyjątku w deklaracji niezgodna poprzedniej deklaracji" zgłoszony przez Clang - Wmicrosoft — wyjątek specyfikacja.Also fixed "exception specification in declaration does not match previous declaration" reported by Clang -Wmicrosoft-exception-spec.
  • Także Naprawiono mem inicjatora listy szeregowania ostrzeżęnia zgłoszone przez Clang i C1XX.Also fixed mem-initializer-list ordering warnings reported by Clang and C1XX.
  • Nieuporządkowane kontenery nie zamienić ich hashers lub predykatów, gdy same kontenery zostały zamienione.The unordered containers did not swap their hashers or predicates when the containers themselves were swapped. Teraz im.Now they do.
  • Wiele operacji wymiany kontenera są teraz oznaczone noexcept (jak nasze biblioteki standardowej nigdy nie zamierza wyjątku podczas wykrywania non -propagate_on_container_swap alokatora niż równe niezdefiniowane zachowanie warunku).Many container swap operations are now marked noexcept (as our Standard Library never intends to throw an exception when detecting the non-propagate_on_container_swap non-equal-allocator undefined behavior condition).
  • Wiele vector<bool> operacje, zostały oznaczone noexcept.Many vector<bool> operations are now marked noexcept.
  • Biblioteka standardowa teraz będzie wymuszać pasującego alokatora value_type (trybem C ++ 17) o rezygnacji z wyjście.The Standard Library will now enforce matching allocator value_type (in C++17 mode) with an opt-out escape hatch.
  • Rozwiązano niektóre warunki, w przypadku, gdy samoobsługowego-range-insert into basic_string będzie szyfrują zawartości ciągów.Fixed some conditions where self-range-insert into basic_string would scramble the strings contents. (Uwaga: samoobsługowego-range-insert into wektorów nadal jest zabronione przez standardowe.)(Note: self-range-insert into vectors is still prohibited by the Standard.)
  • basic_string::shrink_to_fit() nie jest już jest zależna od alokatora propagate_on_container_swap.basic_string::shrink_to_fit() is no longer affected by the allocator's propagate_on_container_swap.
  • std::decay teraz obsługuje typy abominable funkcji (czyli funkcja typy, które są kwalifikowaną stałych nietrwałych i/lub kwalifikowana ref).std::decay now handles abominable function types (i.e. function types that are cv-qualified and/or ref-qualified).
  • Zmienione dyrektyw rozróżnianie wielkości liter dla prawidłowego i ukośników poprawy przenoszenia.Changed include directives to use proper case sensitivity and forward slashes, improving portability.
  • Naprawiono ostrzeżenie C4061 "moduł wyliczający"modułu wyliczającego'w przełączniku Enum'wyliczenie"nie jest jawnie obsługiwany przez etykietę case".Fixed warning C4061 "enumerator 'enumerator' in switch of enum 'enumeration' is not explicitly handled by a case label". To ostrzeżenie jest wyłączone domyślnie i została ustalona jako wyjątek do biblioteki standardowej zasady ogólne ostrzeżenia.This warning is off-by-default and was fixed as an exception to the Standard Library's general policy for warnings. (Standardowa biblioteka /W4 czyszczenie, ale nie jest podejmowana próba się /Wall czyste.(The Standard Library is /W4 clean, but does not attempt to be /Wall clean. Wiele ostrzeżeń wyłączone domyślnie są bardzo hałas i nie są przeznaczone do użycia w regularnych odstępach czasu.)Many off-by-default warnings are extremely noisy and aren't intended to be used on a regular basis.)
  • Ulepszone std::list Debuguj testy.Improved std::list debug checks. Listy wyboru teraz tworzyć Iteratory operator->(), i list::unique() teraz oznacza Iteratory, jako unieważnione.List iterators now check operator->(), and list::unique() now marks iterators as invalidated.
  • Naprawiono metaprogramowanie w używa alokatora tuple.Fixed uses-allocator metaprogramming in tuple.

Wydajność/przepływności poprawkiPerformance/throughput fixes

  • Pracował wokół interakcji z noexcept który uniemożliwił wbudowanie std::atomic implementacją na funkcje korzystające ze strukturą obsługi wyjątków (SEH).Worked around interactions with noexcept which prevented inlining the std::atomic implementation into functions that use Structured Exception Handling (SEH).
  • Zmienione, biblioteka standardowa przez wewnętrzny _Deallocate() funkcję, aby zoptymalizować do mniejszego kodu, dzięki któremu można wbudowana w większej liczbie miejsc.Changed the Standard Library's internal _Deallocate() function to optimize into smaller code, allowing it to be inlined into more places.
  • Zmienione std::try_lock() do użycia rozwinięcie pakietu zamiast rekursji.Changed std::try_lock() to use pack expansion instead of recursion.
  • Ulepszone std::lock() algorytm uniknięcia zakleszczenia lock() operacji zamiast rotowania na try_lock() na wszystkich blokad.Improved the std::lock() deadlock avoidance algorithm to use lock() operations instead of spinning on try_lock() on all the locks.
  • Włączono optymalizacji nazwanej zwracanej wartości w system_category::message().Enabled the Named Return Value Optimization in system_category::message().
  • conjunction i disjunction teraz wystąpienia N + 1 typów, zamiast 2N + 2 typy.conjunction and disjunction now instantiate N + 1 types, instead of 2N + 2 types.
  • std::function już nie tworzy wystąpienie programu przydzielania maszyn pomocy technicznej dla każdego typu wymazanego możliwy do wywołania, usprawnienie przepływności i zmniejszenie rozmiaru .obj w programach, które wiele odrębnych wyrażenia lambda można przekazać std::function.std::function no longer instantiates allocator support machinery for each type-erased callable, improving throughput and reducing .obj size in programs that pass many distinct lambdas to std::function.
  • allocator_traits<std::allocator> zawiera ręcznie śródwierszowych std::allocator operacji, zmniejszyć rozmiar kodu w kodzie, który wchodzi w interakcję z std::allocator za pośrednictwem allocator_traits tylko (czyli w większość kodu).allocator_traits<std::allocator> contains manually inlined std::allocator operations, reducing code size in code that interacts with std::allocator through allocator_traits only (that is, in most code).
  • C ++ 11 interfejs minimalnych jest teraz obsługiwany przez standardową bibliotekę wywoływania allocator_traits bezpośrednio, zamiast zawijania alokator w Wewnętrzna klasa _Wrap_alloc.The C++11 minimal allocator interface is now handled by the Standard Library calling allocator_traits directly, instead of wrapping the allocator in an internal class _Wrap_alloc. To zmniejsza rozmiar kod generowany dla obsługi alokatora, zwiększa możliwości optymalizatorowi przeglądanie informacji o kontenery standardowej biblioteki w niektórych przypadkach i zapewnia to lepszy proces debugowania (ponieważ spowoduje to wyświetlenie danego typu alokatora zamiast _Wrap_alloc<your_allocator_type> w Debuger).This reduces the code size generated for allocator support, improves the optimizer's ability to reason about Standard Library containers in some cases, and provides a better debugging experience (as now you see your allocator type, rather than _Wrap_alloc<your_allocator_type> in the debugger).
  • Usunięte metaprogramowanie, aby dostosować allocator::reference, buforów, które faktycznie nie są dozwolone do dostosowywania.Removed metaprogramming for customized allocator::reference, which allocators aren't actually allowed to customize. (Buforów ułatwia kontenery, użyj swobodnych pustych wskaźników, ale nie ozdobnych odwołania.)(Allocators can make containers use fancy pointers but not fancy references.)
  • Fronton kompilatora został prowadzone do odkodowania Iteratory debugowania w opartej na zakresie pętle, poprawę wydajności w przypadku kompilacji do debugowania.The compiler front-end was taught to unwrap debug iterators in range-based for-loops, improving the performance of debug builds.
  • basic_string Ścieżki wewnętrznego zmniejszania dla shrink_to_fit() i reserve() nie jest już w ścieżce relokacja operacji, zmniejszyć rozmiar kodu dla wszystkich członków mutujące.The basic_string internal shrink path for shrink_to_fit() and reserve() is no longer in the path of reallocating operations, reducing code size for all mutating members.
  • basic_string Wewnętrzny rozwój ścieżka nie jest już w ścieżce shrink_to_fit().The basic_string internal grow path is no longer in the path of shrink_to_fit().
  • basic_string Mutujące operacje teraz są rozkładane na — przydzielanie szybkiej ścieżki i alokowania funkcje powolną ścieżkę, dzięki czemu jest bardziej prawdopodobne w przypadku często spotykana Ponowna alokacja nie był śródwierszowy do obiektów wywołujących.The basic_string mutating operations are now factored into non-allocating fast path and allocating slow path functions, making it more likely for the common no-reallocate case to be inlined into callers.
  • basic_string Mutacja operacje po konstrukcji ponownie przydzielane buforów w żądanym stanie, a nie zmiany rozmiaru w miejscu.The basic_string mutating operations now construct reallocated buffers in the desired state rather than resizing in place. Na przykład wstawiania na początku ciągu teraz przenosi zawartości po wstawieniu dokładnie jeden raz (szczegółów lub do nowo przydzielonego buforu), zamiast dwa razy w przypadku reallocating (do nowo przydzielonego buforu, a następnie w dół).For example, inserting at the beginning of a string now moves the content after the insertion exactly once (either down or to the newly allocated buffer), instead of twice in the reallocating case (to the newly allocated buffer and then down).
  • Operacje w przypadku wywoływania biblioteki standardowej C <ciąg> teraz w pamięci podręcznej errno adres do usunięcia powtarzanych interakcji z protokołem TLS.Operations calling the C standard library in <string> now cache the errno address to remove repeated interaction with TLS.
  • Uproszczony is_pointer implementacji.Simplified the is_pointer implementation.
  • Zmianie na podstawie funkcji wyrażenie SFINAE do struct i void_t— na podstawie.Finished changing function-based Expression SFINAE to struct and void_t-based.
  • Standardowa biblioteka algorytmów unikają teraz postincrementing Iteratory.Standard Library algorithms now avoid postincrementing iterators.
  • Obcięcie stałej ostrzeżenia podczas korzystania z puli buforów 32-bitowych w 64-bitowych systemach.Fixed truncation warnings when using 32-bit allocators on 64-bit systems.
  • std::vector Dzięki ponownemu wykorzystaniu buforu, gdy jest to możliwe jest teraz bardziej efektywne w przypadku innych alokatora równe POCMA bez przeniesienia przypisania.std::vector move assignment is now more efficient in the non-POCMA non-equal-allocator case, by reusing the buffer when possible.

Czytelność i inne ulepszeniaReadability and other improvements

  • Standardowa biblioteka używa teraz C ++ 14 constexpr bezwarunkowo, zamiast warunkowo zdefiniowane makra.The Standard Library now uses C++14 constexpr unconditionally, instead of conditionally-defined macros.
  • Standardowa biblioteka używa teraz szablony aliasów wewnętrznie.The Standard Library now uses alias templates internally.
  • Korzysta teraz z biblioteki standardowej nullptr wewnętrznie, zamiast z nullptr_t{}.The Standard Library now uses nullptr internally, instead of nullptr_t{}. (Wewnętrznego użycia wartości NULL została zlikwidowana.(Internal usage of NULL has been eradicated. Użycie wewnętrznego 0 jako wartość null jest oczyszczany stopniowo.)Internal usage of 0-as-null is being cleaned up gradually.)
  • Korzysta teraz z biblioteki standardowej std::move() wewnętrznie, zamiast stylistically niewłaściwie std::forward().The Standard Library now uses std::move() internally, instead of stylistically misusing std::forward().
  • Zmienione static_assert(false, "message") do #error message.Changed static_assert(false, "message") to #error message. Zwiększa to diagnostyki kompilatora, ponieważ #error natychmiast zatrzymuje kompilację.This improves compiler diagnostics because #error immediately stops compilation.
  • Standardowa biblioteka nie jest już oznacza funkcji jako __declspec(dllimport).The Standard Library no longer marks functions as __declspec(dllimport). Konsolidator nowoczesnych technologii nie wymaga już to.Modern linker technology no longer requires this.
  • Wyodrębnione SFINAE na domyślne argumenty szablonu, która upraszcza w porównaniu do typy zwracane i typy argumentów funkcji.Extracted SFINAE to default template arguments, which reduces clutter compared to return types and function argument types.
  • Debugowania ewidencjonuje <losowych> teraz używać zwykle maszyny biblioteki standardowej, zamiast funkcji wewnętrznej _Rng_abort() której wywołać fputs() do stderr.Debug checks in <random> now use the Standard Library's usual machinery, instead of the internal function _Rng_abort() which called fputs() to stderr. Implementacja tej funkcji jest są zachowywane dla zgodność binarną, ale została usunięta w przyszłych wersjach niezgodne dane binarne w standardowej biblioteki.This function's implementation is being retained for binary compatibility, but has been removed in the next binary-incompatible version of the Standard Library.

Visual Studio 2017 w wersji 15.5Visual Studio 2017 version 15.5

Kilka funkcji standardowej biblioteki zostały dodane, przestarzałe lub usunięte zgodnie z standard C ++ 17.Several Standard Library features have been added, deprecated or removed in accordance with the C++17 standard. Aby uzyskać więcej informacji, zobacz ulepszenia zgodności języka C++ w programie Visual Studio.For more information see C++ conformance improvements in Visual Studio.

Nowe funkcje eksperymentalneNew experimental features

  • Eksperymentalna Obsługa następujące algorytmy równoległe:Experimental support for the following parallel algorithms:
    • all_of
    • any_of
    • for_each
    • for_each_n
    • none_of
    • reduce
    • replace
    • replace_if
    • sort
  • Podpisy dla następujących algorytmy równoległe są dodane, ale nie została zrównoleglona w tej chwili; Profilowanie wykazało, że żadne korzyści w przekształcają algorytmy, które tylko przenieść lub permute — elementy:The signatures for the following parallel algorithms are added but not parallelized at this time; profiling showed no benefit in parallelizing algorithms that only move or permute elements:
    • copy
    • copy_n
    • fill
    • fill_n
    • move
    • reverse
    • reverse_copy
    • rotate
    • rotate_copy
    • swap_ranges

Ulepszenia i poprawki wydajnościPerformance fixes and improvements

  • basic_string<char16_t> teraz angażuje takie same memcmp, memcpyi podobnie optymalizacje, basic_string<wchar_t> angażuje.basic_string<char16_t> now engages the same memcmp, memcpy, and similar optimizations that basic_string<wchar_t> engages.
  • Ograniczenie Optymalizator, który uniemożliwił wskaźników funkcji miałyby śródwierszowych udostępnianych przez naszych "unikać kopiowania funkcji" Praca w Visual Studio 2015 Update 3 pracował zostały wokół, przywracanie wydajność lower_bound(iter, iter, function pointer).An optimizer limitation which prevented function pointers from being inlined exposed by our "avoid copying functions" work in Visual Studio 2015 Update 3 has been worked around, restoring performance of lower_bound(iter, iter, function pointer).
  • Obciążenie debugowania iteratora w kolejności weryfikacji danych wejściowych includes, set_difference, set_symmetric_difference, i set_union został skrócony przez Odkodowywanie Iteratory przed zaewidencjonowaniem, order.The overhead of iterator debugging's order verification of inputs to includes, set_difference, set_symmetric_difference, and set_union was reduced by unwrapping iterators before checking order.
  • std::inplace_merge teraz nakłada się na elementy, które znajdują się już w miejscu.std::inplace_merge now skips over elements that are already in position.
  • Konstruowanie std::random_device już nie tworzy, a następnie niszczy std::string.Constructing std::random_device no longer constructs and then destroys a std::string.
  • std::equal i std::partition miał wątkowości Szybkie przebieg optymalizacji, co pozwoli zaoszczędzić porównanie iteratora.std::equal and std::partition had a jump-threading optimization pass which saves an iterator comparison.
  • Gdy std::reverse jest przekazywany wskaźników do kopiowania T, teraz spowoduje wysłanie pisma odręcznego implementacji zwektoryzowane.When std::reverse is passed pointers to trivially copyable T, it will now dispatch to a handwritten vectorized implementation.
  • std::fill, std::equal, i std::lexicographical_compare zostały prowadzone jak zostać wysłane żądanie memset i memcmp dla std::byte i gsl::byte (i inne typy wyliczeniowe przypominające znak i Wylicz klasy).std::fill, std::equal, and std::lexicographical_compare were taught how to dispatch to memset and memcmp for std::byte and gsl::byte (and other char-like enums and enum classes). Należy pamiętać, że std::copy wywołuje przy użyciu is_trivially_copyable i w związku z tym nie potrzebuję wszelkie zmiany.Note that std::copy dispatches using is_trivially_copyable and thus didn't need any changes.
  • Standardowa biblioteka nie zawiera już destruktory nawiasów klamrowych pusty, którego jedynym zachowanie było typów innych niż przypadku zniszczalnych.The Standard Library no longer contains empty-braces destructors whose only behavior was to make types non-trivially-destructible.

Poprawność poprawki w programie Visual Studio 2017 w wersji 15.5Correctness fixes in Visual Studio 2017 version 15.5

  • std::partition teraz wywołania razy predykatu N zamiast N + 1 godziny jako standard wymaga.std::partition now calls the predicate N times instead of N + 1 times, as the standard requires.
  • Próbuje uniknąć Magiczna statyka w wersji 15.3 zostały naprawione w wersji 15.5.Attempts to avoid magic statics in version 15.3 have been repaired in version 15.5.
  • std::atomic<T> nie wymaga już T być konstrukcyjną domyślny.std::atomic<T> no longer requires T to be default constructible.
  • Algorytmy sterty trwać logarytmiczna nie jest już do potwierdzenia liniowo, że dane wejściowe są w rzeczywistości sterty po włączeniu debugowania iteratora.Heap algorithms that take logarithmic time no longer do a linear time assertion that the input is in fact a heap when iterator debugging is enabled.
  • __declspec(allocator) teraz jest chroniony dla C1XX tylko zapobiec ostrzeżenia z Clang, który nie rozpoznaje tego declspec.__declspec(allocator) is now guarded for C1XX only, to prevent warnings from Clang which doesn't understand this declspec.
  • basic_string::npos jest teraz dostępny jako stałą czasu kompilacji.basic_string::npos is now available as a compile time constant.
  • std::allocator w trybie C ++ 17 teraz poprawnie obsługuje alokację typów nadmiernie wyrównanych, oznacza to, typów wyrównanie, w których jest większa niż max_align_t, chyba że wyłączone przez /Zc:alignedNew-.std::allocator in C++17 mode now properly handles allocation of over-aligned types, that is, types whose alignment is greater than max_align_t, unless disabled by /Zc:alignedNew-. Na przykład wektorami typów obiektów z 16 lub 32-bajtowego wyrównania będzie teraz prawidłowo wyrównany dla instrukcji SSE i AVX.For example, vectors of objects with 16 or 32-byte alignment will now be properly aligned for SSE and AVX instructions.

Visual Studio 2017 wersja 15.6Visual Studio 2017 version 15.6

  • <memory_resource ><memory_resource>
  • Podstawowe informacje dotyczące biblioteki w wersji 1Library Fundamentals V1
  • Usuwanie przypisania polymorphic_allocatorDeleting polymorphic_allocator assignment
  • Usprawnienie Wnioskowanie argumentu szablonu klasyImproving class template argument deduction

Visual Studio 2017 w wersji 15.7Visual Studio 2017 version 15.7

  • Obsługa równoległych algorytmów nie jest już experiementalsupport for parallel algorithms is no longer experiemental
  • nową metodę implementacji <filesystem >a new implementation of <filesystem>
  • podstawowe ciąg konwersje (częściowa Obsługa)elementary string conversions (partial)
  • STD::launder()std::launder()
  • STD::Bytestd::byte
  • hypot(x,y,z)hypot(x,y,z)
  • unikanie niepotrzebnych zanikaniaavoiding unnecessary decay
  • Funkcje matematyczne specjalnemathematical special functions
  • constexpr char_traitsconstexpr char_traits
  • Przewodniki po odjęciu STLdeduction guides for STL

Zobacz zgodność języka Visual C++ Aby uzyskać więcej informacji.See Visual C++ language conformance for more information.

Inne bibliotekiOther Libraries

Obsługa bibliotek typu open sourceOpen source library support

Vcpkg to narzędzie wiersza polecenia typu open source, które znacząco upraszcza proces pobierania i tworzenia biblioteki statycznej "open source" C++ i bibliotek DLL w programie Visual Studio.Vcpkg is an open-source command line tool that greatly simplifies the process of acquiring and building open source C++ static libs and DLLS in Visual Studio. Aby uzyskać więcej informacji, zobacz vcpkg: Menedżer pakietów dla języka C++.For more information, see vcpkg: A package manager for C++.

Visual Studio 2017 w wersji 15.5:Visual Studio 2017 version 15.5:

Zestaw SDK CPPRest 2.9.0CPPRest SDK 2.9.0

CPPRestSDK, internetowy interfejs API dla wielu platform w języku C++, został zaktualizowany do wersji 2.9.0.The CPPRestSDK, a cross-platform web API for C++, has been updated to version 2.9.0. Aby uzyskać więcej informacji, zobacz CppRestSDK 2.9.0 jest dostępna w witrynie GitHub.For more information, see CppRestSDK 2.9.0 is available on GitHub.

ATLATL

  • Jeszcze inny zbiór poprawek zgodności wyszukiwania nazwYet another set of name-lookup conformance fixes
  • Istniejące konstruktory przenoszenia i Przenieś operatory przypisania są teraz prawidłowo oznaczone jako niezgłaszająceExisting move constructors and move assignment operators are now properly marked as non-throwing
  • Niewyłączone prawidłowe ostrzeżenie C4640 o bezpiecznym wątkowo programu w pliku atlstr.hUn-suppress valid warning C4640 about thread safe init of local statics in atlstr.h
  • Bezpiecznego wątkowo inicjowania lokalnych danych statycznych było automatycznie wyłączone w zestawie narzędzi XP podczas [używania biblioteki ATL i tworzenia biblioteki DLL].Thread Safe Initialization of local statics was automatically turned off in the XP toolset when [using ATL AND building a DLL]. Obecnie taka ewentualność nie zachodzi.This is no longer the case. Możesz dodać threadsafeinit w ustawieniach projektu, jeśli występują w wątku wymagane jest bezpieczne wątkowo inicjowanie wyłączone.You can add /Zc:threadSafeInit- in your Project settings if having thread safe initialization off is desired.

Środowisko uruchomieniowe Visual C++Visual C++ runtime

  • Nowy nagłówek "cfguard.h" dla symboli ochrony przepływu sterowania.New header "cfguard.h" for Control Flow Guard symbols.

Środowisko IDE języka C++C++ IDE

  • Wydajność wprowadzania zmian w konfiguracji jest teraz lepsza w przypadku natywnych projektów w języku C++ i o wiele lepsza w projektach C++/CLI.Configuration change performance is now better for C++ native projects and much better for C++/CLI projects. W momencie pierwszej aktywacji konfiguracja rozwiązania będzie teraz szybsza, a wszystkie kolejne aktywacje konfiguracji rozwiązania będą prawie natychmiastowe.When a solution configuration is activated for the first time it will now be faster and all subsequent activations of this solution configuration will be almost instantaneous.

Visual Studio 2017 w wersji 15.3:Visual Studio 2017 version 15.3:

  • Ponownie napisano kilka kreatorów projektu i kodów w stylu okna dialogowego podpisu.Several project and code wizards have been rewritten in the signature dialog style.
  • Dodaj klasę teraz powoduje bezpośrednie uruchomienie Kreatora dodawania klasy.Add Class now launches the Add Class wizard directly. Wszystkie inne elementy, które zostały wcześniej w tym miejscu są teraz dostępne w obszarze Dodaj > Nowy element.All of the other items that were previously here are now available under Add > New Item.
  • Projekty Win32 należą teraz w ramach pulpitu Windows kategorii nowy projekt okna dialogowego.Win32 projects are now under the Windows Desktop category in the New Project dialog.
  • Konsoli Windows i aplikacja komputerowa szablony teraz tworzenie projektów bez wyświetlania kreatora.The Windows Console and Desktop Application templates now create the projects without displaying a wizard. Jest dostępny nowy kreatora pulpitu Windows w tej samej kategorii, który wyświetla te same opcje co stary Aplikacja konsoli Win32 kreatora.There's a new Windows Desktop Wizard under the same category that displays the same options as the old Win32 Console Application wizard.

Visual Studio 2017 w wersji 15.5:Visual Studio 2017 version 15.5:

Kilka operacji w języku C++, które używają aparatu funkcji IntelliSense dla refaktoryzacji i nawigowanie po kodzie działają dużo szybciej.Several C++ operations that use the IntelliSense engine for refactoring and code navigation run much faster. Następujące numery opierają się na rozwiązanie Visual Studio chrom z projektami 3500:The following numbers are based on the Visual Studio Chromium solution with 3500 projects:

FunkcjaFeature Zwiększenie wydajnościPerformance Improvement
Zmień nazwęRename 5.3 x5.3x
Zmień podpisChange Signature 4,5 x4.5x
Znajdź wszystkie odwołaniaFind All References 4,7 x4.7x

Język C++ obsługuje teraz Ctrl + kliknięcie przejdź do definicji, dzięki łatwo myszy nawigacji do definicji.C++ now supports Ctrl+Click Go To Definition, making mouse navigation to definitions easy. Wizualizator struktury z dodatkiem Service pack Productivity Power Tools jest teraz również domyślnie w ramach produktu.The Structure Visualizer from the Productivity Power Tools pack is now also included in the product by default.

IntelliSenseIntelliSense

  • Nowy aparat bazy danych oparty na SQLite jest teraz używany domyślnie.The new SQLite-based database engine is now being used by default. Przyspieszy to operacje bazy danych, takie jak przejdź do definicji i Znajdź wszystkie odwołaniaoraz znacznie skróci czas początkowego analizowania rozwiązania.This will speed up database operations like Go To Definition and Find All References, and will significantly improve initial solution parse time. To ustawienie zostało przeniesione do Narzędzia > Opcje > Edytor tekstu > C/C++ > Zaawansowane (wcześniej było dostępne w obszarze... C/C++ | Eksperymentalne).The setting has been moved to Tools > Options > Text Editor > C/C++ > Advanced (it was formerly under ...C/C++ | Experimental).

  • Poprawiliśmy wydajność funkcji IntelliSense dla projektów i plików, które nie używa prekompilowanych nagłówków — zostanie utworzony automatyczny prekompilowany nagłówek w bieżącym pliku dla nagłówków.We've improved IntelliSense performance on projects and files not using precompiled headers - an Automatic Precompiled Header will be created for headers in the current file.

  • Do listy błędów dodaliśmy filtrowanie błędów i pomoc dotyczącą błędów funkcji IntelliSense.We've added error filtering and help for IntelliSense errors in the error list. Kliknięcie kolumny błędów umożliwia teraz filtrowanie.Clicking on the error column now allows for filtering. Ponadto kliknięcie konkretnego błędu lub naciśnięcie klawisza F1 uruchamia wyszukiwanie online dotyczące danego komunikatu o błędzie.Also, clicking on the specific errors or pressing F1 will launch an online search for the error message.

    Lista błędówError List

    Filtrowana lista błędówError List Filtered

  • Dodano możliwość filtrowania listy elementów członkowskich według rodzaju.Added the ability to filter Member List items by kind.

    Filtrowanie listy elementów członkowskichMember List Filtering

  • Dodano nową eksperymentalną funkcję Predictive IntelliSense, która pozwala na kontekstowe filtrowanie pozycji wyświetlanych na liście elementów członkowskich.Added a new experimental Predictive IntelliSense feature that provides contextually-aware filtering of what appears in the Member List. Zobacz ulepszeń funkcji IntelliSense w języku C++ - Predictive IntelliSense i filtrowanieSee C++ IntelliSense Improvements - Predictive IntelliSense & Filtering

  • Znajdź wszystkie odwołania (Shift + F12) teraz pomaga obejść, nawet w przypadku złożonych bazach kodu.Find All References (Shift+F12) now helps you get around easily, even in complex codebases. Umożliwia zaawansowane grupowanie, filtrowanie, sortowanie, wyszukiwanie w ramach wyników i (w przypadku niektórych języków) kolorowanie, dzięki czemu można uzyskać świadomość odwołaniami.It provides advanced grouping, filtering, sorting, searching within results, and (for some languages) colorization, so you can get a clear understanding of your references. Dla języka C++ nowy interfejs użytkownika zawiera informacje dotyczące tego, czy możemy odczytujemy ze zmiennej czy zapisujemy do zmiennej.For C++, the new UI includes information about whether we are reading from or writing to a variable.
  • Funkcja zmiany kropki na strzałkę IntelliSense została przeniesiona z doświadczalnych do zaawansowanych i teraz jest domyślnie włączona.The Dot-to-Arrow IntelliSense feature has been moved from experimental to advanced, and is now enabled by default. Funkcje edytora rozwiń zakresy i rozwiń pierwszeństwo również zostały przeniesione z doświadczalnych do zaawansowanych.The editor features Expand Scopes and Expand Precedence have also been moved from experimental to advanced.
  • Eksperymentalne funkcje refaktoryzacji Zmień podpis i Wyodrębnij funkcję są teraz dostępne domyślnie.The experimental refactoring features Change Signature and Extract Function are now available by default.
  • Eksperymentalną funkcję "Szybsze ładowanie projektu" dla projektów C++.The experimental 'Faster project load' feature for C++ projects. Przy następnym otwarciu projektu w języku C++ będzie on ładować się szybciej, a przy każdym następnym będzie ładować się naprawdę szybko!The next time you open a C++ project it will load faster, and the time after that it will load really fast!
  • Niektóre z tych funkcji są wspólne dla innych języków, a niektóre są specyficzne dla języka C++.Some of these features are common to other languages, and some are specific to C++. Aby uzyskać więcej informacji o tych nowych funkcjach, zobacz Announcing Visual Studio "15".For more information about these new features, see Announcing Visual Studio "15".

Visual Studio 1027 wersji 15.7: Dodano obsługę narzędzia ClangFormat.Visual Studio 1027 version 15.7: Support added for ClangFormat. Aby uzyskać więcej informacji, zobacz obsługę formatu ClangFormat w programie Visual Studio 2017.For more information, see ClangFormat Support in Visual Studio 2017.

Projekty inne niż MSBuild z Otwórz FolderNon-MSBuild projects with Open Folder

Program Visual Studio 2017 wprowadzono Otwórz Folder funkcji, która umożliwia kodu, kompilacji i debugowania w folderze zawierające kod źródłowy, bez konieczności tworzenia żadnych rozwiązań lub projektów.Visual Studio 2017 introduces the Open Folder feature, which enables you to code, build and debug in a folder containing source code without the need to create any solutions or projects. Dzięki temu można łatwiej rozpocząć pracę z programem Visual Studio, nawet jeśli projekt nie jest projektem opartych na platformie MSBuild.This makes it much simpler to get started with Visual Studio even if your project is not an MSBuild-based project. Za pomocą Otwórz Folder uzyskasz dostęp do zaawansowanych kod, zrozumienie, edytowania, kompilowania i debugowania możliwości udostępnianych przez program Visual Studio już dla projektów programu MSBuild.With Open Folder you get access to the powerful code understanding, editing, building and debugging capabilities that Visual Studio already provides for MSBuild projects. Aby uzyskać więcej informacji, zobacz projekty Otwórz Folder w programie Visual C++.For more information, see Open Folder projects in Visual C++.

  • Ulepszenia obsługi polecenia Otwórz folder.Improvements to the Open Folder experience. Środowisko można dostosować za pomocą tych plików JSON:You can customize the experience through these .json files:
    • CppProperties.json dostosowuje obsługę funkcji IntelliSense i przeglądania.CppProperties.json to customize the IntelliSense and browsing experience.
    • Tasks.json dostosowuje kroki kompilacji.Tasks.json to customize the build steps.
    • Launch.json dostosowuje obsługę debugowania.Launch.json to customize the debugging experience.

Visual Studio 2017 w wersji 15.3:Visual Studio 2017 version 15.3:

  • Ulepszona obsługa środowiska kompilacji, takie jak rozwiązań MinGW i Cygwin i Kompilatory języka alternatywne.Improved support for alternative compilers and build environments such as MinGW and Cygwin. Aby uzyskać więcej informacji, zobacz przy użyciu rozwiązań MinGW i Cygwin przy użyciu języka Visual C++ i otwórz Folder.For more information, see Using MinGW and Cygwin with Visual C++ and Open Folder.
  • Dodano obsługę definiowania zmiennych środowiskowych globalnych i specyficznych dla konfiguracji w plikach CppProperties.json i pliku CMakeSettings.json.Added support to define global and configuration-specific environment variables in CppProperties.json and CMakeSettings.json. Te zmienne środowiskowe mogą być używane przez konfiguracje debugowania definiowane w pliku launch.vs.json i zadań podrzędnych w pliku tasks.vs.json.These environment variables can be consumed by debug configurations defined in launch.vs.json and tasks in tasks.vs.json. Aby uzyskać więcej informacji, zobacz Dostosowywanie środowiska Visual C++ i otwórz Folder.For more information, see Customizing your Environment with Visual C++ and Open Folder.
  • Ulepszona obsługa generatora Ninja CMake, w tym możliwość platformami 64-bitowych.Improved support for CMake's Ninja generator, including the ability to easily target 64-bit platforms.

Obsługa CMake za pośrednictwem otwartego folderuCMake support via Open Folder

Program Visual Studio 2017 wprowadzono obsługę za pomocą projektów CMake, bez konwersji do MSBuild pliki projektu (.vcxproj).Visual Studio 2017 introduces support for using CMake projects without converting to MSBuild project files (.vcxproj). Aby uzyskać więcej informacji, zobacz projektów CMake w programie Visual C++.For more information, see CMake projects in Visual C++. Otwarcie projektu CMake za pomocą Otwórz Folder automatycznie skonfiguruje środowisko dla języka C++, edytowania, kompilowania i debugowania.Opening CMake projects with Open Folder automatically configures the environment for C++ editing, building and debugging.

  • Funkcji C++ IntelliSense działa bez konieczności tworzenia pliku CppProperties.json w folderze głównym.C++ IntelliSense works without the need to create a CppProperties.json file in the root folder. Wraz z tym dodaliśmy nowe listy rozwijane, aby użytkownicy mogli łatwo przełączać się między konfiguracjami dostarczonymi przez pliki CMake i CppProperties.json.Along with this, we've added a new dropdown to allow users to easily switch between configurations provided by CMake and CppProperties.json files.

  • Dalsza konfiguracja jest obsługiwana przy użyciu pliku CMakeSettings.json, który znajduje się w tym samym folderze co plik CMakeLists.txt.Further configuration is supported via a CMakeSettings.json file that sits in the same folder as the CMakeLists.txt file.

    Cmake Otwórz folderCmake Open Folder

Visual Studio 2017 w wersji 15.3: Dodano obsługę generatora Ninja narzędzia CMake.Visual Studio 2017 version 15.3: Support added for the CMake Ninja generator.

Visual Studio 2017 w wersji 15.5: pamięci podręczne mechanizmu dodanego do importowania istniejących narzędzia CMake.Visual Studio 2017 version 15.5: Support added for importing existing CMake caches.

Visual Studio 2017 w wersji 15.7: dodano dla CMake 3.11 analizy kodu w projektach CMake obsługę jest przeznaczony dla widoku w Eksploratorze rozwiązań kliknij opcje generowania pamięci podręcznej i kompilacji pojedynczego pliku.Visual Studio 2017 version 15.7: Support added for CMake 3.11, code analysis in CMake projects, Targets view in Solution Explorer, options for cache generation, and single file compilation. Aby uzyskać więcej informacji, zobacz Obsługa CMake w programie Visual Studio i projektów CMake w programie Visual C++.For more information, see CMake Support in Visual Studio and CMake projects in Visual C++.

Programowanie aplikacji klasycznych Windows w języku C++Windows desktop development with C++

Zapewniamy obecnie bardziej zaawansowane środowisko instalacji oryginalnego obciążenia C++.We now provide a more granular installation experience for installing the original C++ workload. Dodaliśmy możliwe do wybrania składniki pozwalające na zainstalowanie tylko tych narzędzi, których potrzebujesz.We have added selectable components that enable you to install just the tools that you need. Należy pamiętać, że wskazane w interfejsie użytkownika instalatora rozmiary instalacji składników nie są prawidłowe i zaniżają całkowity rozmiar instalacji.Please note that the indicated installation sizes for the components listed in the installer UI are not accurate and underestimate the total size.

Aby pomyślnie tworzyć projekty Win32 w obciążeniu C++ dla komputerów stacjonarnych, musisz zainstalować zarówno zestaw narzędzi, jak i zestaw SDK systemu Windows.To successfully create Win32 projects in the C++ desktop workload, you must install both a toolset and a Windows SDK. Zainstalowanie zalecanych (zaznaczonych) składników VC ++ 2017 narzędzi w wersji 141 (x86, x64) i zestawu Windows 10 SDK (10.0.nnnnn) zapewnia, będzie to możliwe.Installing the recommended (selected) components VC++ 2017 v141 toolset (x86, x64) and Windows 10 SDK (10.0.nnnnn) ensures this will work. Jeśli potrzebne narzędzia nie zostaną zainstalowane, projekty nie będą pomyślnie tworzone i kreator będzie się zawieszać.If the necessary tools are not installed, projects will not be created successfully and the wizard will hang.

Visual Studio 2017 w wersji 15.5:Visual Studio 2017 version 15.5:

(Wcześniej dostępny jako autonomiczny produkt) Visual C++ Build tools są teraz uwzględnione jako obciążenie w Instalatorze programu Visual Studio.The Visual C++ Build tools (previously available as a standalone product) are now included as a workload in the Visual Studio Installer. To obciążenie instaluje tylko narzędzia wymagane do kompilowania projektów języka C++, bez konieczności instalowania programu Visual Studio IDE.This workload installs only the tools required to build C++ projects without installing the Visual Studio IDE. Uwzględniane są zarówno w wersji 140, jak i w wersji 141 zestawy narzędzi.Both the v140 and v141 toolsets are included. Narzędzi w wersji 141 zawiera najnowsze ulepszenia w programie Visual Studio 2017 w wersji 15.5.The v141 toolset contains the lastest improvements in Visual Studio 2017 version 15.5. Aby uzyskać więcej informacji, zobacz Visual Studio Build Tools zawierają teraz programu VS 2017 i zestawy narzędzi MSVC VS2015.For more information, see Visual Studio Build Tools now include the VS2017 and VS2015 MSVC Toolsets.

Programowanie dla systemu Linux przy użyciu języka C++Linux development with C++

Popularne rozszerzenie Visual C++ for Linux Development stanowi obecnie cześć programu Visual Studio.The popular extension Visual C++ for Linux Development is now part of Visual Studio. Ta instalacja zawiera wszystko, czego potrzebujesz do tworzenia i debugowania aplikacji w języku C++ działających w środowisku systemu Linux.This installation provides everything you need to develop and debug C++ applications running on a Linux environment.

Visual Studio 2017 wersja 15.2:Visual Studio 2017 version 15.2:

Wprowadzono ulepszenia w wizualizacji do udostępniania i typ kodu między platformami.Improvements have been made in cross-platform code sharing and type visualization. Aby uzyskać więcej informacji, zobacz ulepszenia języka Linux C++ dla wielu platform kod, udostępnianie i typ wizualizacji.For more information, see Linux C++ improvements for cross-platform code sharing and type visualization.

Visual Studio 2017 w wersji 15.5:Visual Studio 2017 version 15.5:

  • Obciążenie systemu Linux została dodana obsługa rsync jako alternatywę dla sftp synchronizowania plików do zdalnej maszyny z systemem Linux.The Linux workload has added support for rsync as an alternative to sftp for synchronizing files to remote Linux machines.
  • Dodano obsługę wielu kompilacji przeznaczonych dla mikrokontrolerów ARM.Support is added for cross compilation targeting ARM microcontrollers. Aby włączyć tę opcję w instalacji, wybierz programowanie dla systemu Linux przy użyciu języka C++ obciążenia i wybierz opcję dla osadzonych i IoT rozwoju.To enable this in the installation, choose the Linux development with C++ workload and select the option for Embedded and IoT Development. Spowoduje to dodanie marki i kompilatora GCC ARM cross tools kompilacji do instalacji.This adds the ARM GCC cross compilation tools and Make to your installation. Aby uzyskać więcej informacji, zobacz kompilatorów GCC dla procesorów ARM Cross kompilacji, w programie Visual Studio.For more information, see ARM GCC Cross Compilation in Visual Studio.
  • Obsługa dodane do narzędzia CMake.Support added for CMake. Teraz możesz pracować na istniejącej bazy kodu CMake bez konieczności konwertowania go do projektu programu Visual Studio.You can now work on your existing CMake code base without having to convert it to a Visual Studio project. Aby uzyskać więcej informacji, zobacz Konfigurowanie projektu CMake systemu Linux.For more information, see Configure a Linux CMake Project.
  • Obsługa dodane do uruchamiania zadania zdalne.Support added for running remote tasks. Ta funkcja umożliwia uruchamianie dowolnego polecenia w systemie zdalnym, który jest zdefiniowany w Menedżerze połączeń programu Visual Studio.This capability allows you to run any command on a remote system that is defined in Visual Studio’s Connection Manager. Zadania zdalne udostępniają również możliwość kopiowania plików do systemu zdalnego.Remote tasks also provide the capability to copy files to the remote system. Aby uzyskać więcej informacji, zobacz Konfigurowanie projektu CMake systemu Linux.For more information, see Configure a Linux CMake Project.

Visual Studio 2017 w wersji 15.7:Visual Studio 2017 version 15.7:

Programowanie gier w języku C++Game development with C++

Pełnych możliwości języka C++ można użyć do tworzenia profesjonalnych gier obsługiwanych przy użyciu zestawu funkcji DirectX lub Cocos2d.Use the full power of C++ to build professional games powered by DirectX or Cocos2d.

Tworzenie aplikacji mobilnych przy użyciu języka C++ (systemy Android i iOS)Mobile development with C++ (Android and iOS)

Program Visual Studio umożliwia obecnie programowanie i debugowanie aplikacji mobilnych przeznaczonych dla systemów Android oraz iOS.You can now create and debug mobile apps using Visual Studio that can target Android and iOS.

Aplikacje uniwersalne systemu WindowsUniversal Windows Apps

Język C++ stanowi składnik opcjonalny obciążenia Aplikacja uniwersalna systemu Windows.C++ comes as an optional component for the Universal Windows App workload. Obecnie uaktualnianie projektów C++ należy wykonywać ręcznie.Upgrading C++ projects currently must be done manually. Po otwarciu projektu przeznaczonego dla wersji 140 platformy uniwersalnej systemu Windows (UWP) w programie Visual Studio 2017 musisz wybrać zestaw narzędzi platformy w wersji 141 na stronach właściwości projektu, jeśli nie masz zainstalowanego programu Visual Studio 2015.If you open a v140-targeted UWP project in Visual Studio 2017, you need to select the v141 platform toolset in the project property pages if you do not have Visual Studio 2015 installed.

Nowe opcje dla języka C++ na uniwersalnej platformy Windows (UWP)New options for C++ on Universal Windows Platform (UWP)

Masz teraz nowe opcje zapisywania i pakowania aplikacji w języku C++ platformy uniwersalnej Windows i Windows Store: infrastrukturę programu Desktop Bridge można użyć do pakietu z istniejącej aplikacji pulpitu lub obiektu COM dla wdrożenia przy użyciu Windows Store lub za pośrednictwem istniejących kanałów za pośrednictwem ładowania bezpośredniego.You now have new options for writing and packaging C++ applications for the Universal Windows Platform and the Windows Store: You can use the Desktop Bridge infrastructure to package your existing desktop application or COM object for deployment through the Windows Store or through your existing channels via side-loading. Nowe funkcje w systemie Windows 10 umożliwiają dodawanie funkcji platformy uniwersalnej systemu Windows do swojej aplikacji klasycznej na różne sposoby.New capabilities in Windows 10 enable you to add UWP functionality to your desktop application in various ways. Aby uzyskać więcej informacji, zobacz Desktop Bridge.For more information, see Desktop Bridge.

Visual Studio 2017 w wersji 15.5: A projekt pakietu aplikacji Windows szablonu projektu zostanie dodany, które znacznie upraszczają pracę pakowania aplikacji klasycznych przy użyciu Desktop Bridge.Visual Studio 2017 version 15.5: A Windows Application Packaging Project project template is added which greatly simplifies the work of packaging desktop applications with using Desktop Bridge. Jest on dostępny w obszarze pliku | Nowe | Projekt | Zainstalowane | Visual C++ | Platforma Universal Windows.It is available under File | New | Project | Installed | Visual C++ | Universal Windows Platform. Aby uzyskać więcej informacji, zobacz pakietu aplikacji przy użyciu programu Visual Studio (Desktop Bridge).For more information, see Package an app by using Visual Studio (Desktop Bridge).

Jeśli piszesz nowy kod, możesz teraz używać języka C + +/ WinRT, standardowe rzutowania języka C++ dla Windows implementowanej wyłącznie w plikach nagłówkowych.When writing new code, you can now use C++/WinRT, a standard C++ language projection for the Windows Runtime implemented solely in header files. Ona umożliwia zarówno tworzenie i używanie interfejsów API środowiska wykonawczego Windows przy użyciu dowolnej zgodnych ze standardami kompilator języka C++.It allows you to both author and consume Windows Runtime APIs using any standards-compliant C++ compiler. C + +/ WinRT ma na celu zapewnienie programistów C++ przy użyciu najwyższej klasy dostępu do nowoczesnego interfejsu Windows API.C++/WinRT is designed to provide C++ developers with first-class access to the modern Windows API. Aby uzyskać więcej informacji, zobacz C + +/ WinRT dostępne w serwisie GitHub.For more information, see C++/WinRT Available on GitHub.

Począwszy od programu kompilacji 17025 Windows SDK Insider Preview, C + +/ WinRT znajduje się w zestawie Windows SDK.As of build 17025 of the Windows SDK Insider Preview, C++/WinRT is included in the Windows SDK. Aby uzyskać więcej informacji, zobacz C + +/ WinRT jest teraz dołączone do zestawu Windows SDK.For more information, see C++/WinRT is now included the Windows SDK.

Zestaw narzędzi platformy clang/C2Clang/C2 platform toolset

Zestaw narzędzi Clang/C2 dostarczany z programem Visual Studio 2017 obsługuje teraz /bigobj przełącznika, który jest kluczowy podczas kompilowania dużych projektów.The Clang/C2 toolset that ships with Visual Studio 2017 now supports the /bigobj switch, which is crucial for building large projects. Oferuje on również kilka ważnych poprawek, zarówno we frontonie, jak i zapleczu kompilatora.It also includes several important bug fixes, both in the front-end and the back-end of the compiler.

Analiza kodu C++C++ code analysis

Podstawowe narzędzia do sprawdzania kodu C++ wymuszające stosowanie podstawowych wytycznych dotyczących języka C++ są obecnie dystrybuowane z programem Visual Studio.The C++ Core Checkers for enforcing the C++ Core Guidelines are now distributed with Visual Studio. Po prostu włącz narzędzia do sprawdzania w rozszerzenia analizy kodu strony, strony właściwości projektu i rozszerzenia zostaną uwzględnione podczas uruchamiania analizy kodu.Simply enable the checkers in the Code Analysis Extensions page in the project's property pages and the extensions will be included when you run code analysis. Aby uzyskać więcej informacji, zobacz przy użyciu narzędzia do sprawdzania podstawowych wytycznych dotyczących języka C++.For more information, see Using the C++ Core Guidelines checkers.

CppCoreCheckCppCoreCheck

Visual Studio 2017 w wersji 15.3: Dodano obsługę reguł związanych z zarządzaniem zasobami.Visual Studio 2017 version 15.3: Support added for rules related to resource management.

Visual Studio 2017 w wersji 15.5: Sprawdzanie nowego języka C++ w podstawowych wytycznych dotyczących pokrycia poprawności wskaźnika inteligentnego, poprawnego użycia inicjatorów globalnych i używa flag konstrukcji, takich jak goto i zły rzutowania.Visual Studio 2017 version 15.5: New C++ Core Guidelines checks cover smart pointer correctness, correct use of global initializers, and flagging uses of constructs like goto and bad casts.

Niektóre numery ostrzeżeń, które można znaleźć w wersji 15.3, nie są już dostępne w wersji 15.5.Some warning numbers you may find in 15.3 are no longer available in 15.5. Ostrzeżenia te zostały zastąpione bardziej szczegółowymi operacjami sprawdzania.These warnings were replaced with more specific checks.

Visual Studio 2017 w wersji 15.6:Visual Studio 2017 version 15.6:
Obsługa dodane do pojedynczego pliku analiz i poprawę wydajności analizy w czasie wykonywania.Support added for single-file analysis, and improvements in analysis run-time performance. Aby uzyskać więcej informacji, zobacz statycznej analizy ulepszenia dla języka C++ dla Visual Studio 2017 15.6 w wersji zapoznawczej 2For more information, see C++ Static Analysis Improvements for Visual Studio 2017 15.6 Preview 2

Visual Studio 2017 w wersji 15.7:Visual Studio 2017 version 15.7:

Testowanie jednostekUnit testing

Visual Studio 2017 w wersji 15.5:Visual Studio 2017 version 15.5:

Adapter testowy Google i Boost.Test karty są teraz dostępne jako składniki programowanie aplikacji klasycznych w języku C++ obciążenia i są zintegrowane z Eksplorator testów.Google Test Adapter and Boost.Test Adapter are now available as components of the Desktop Development with C++ workload, and are integrated with Test Explorer. Obsługa narzędzia CTest jest dodawany do projektów Cmake (za pomocą otwartego folderu), mimo że pełna integracja z Eksplorator testów nie jest jeszcze dostępna.CTest support is added for Cmake projects (using Open Folder) although full integration with Test Explorer is not yet available. Aby uzyskać więcej informacji, zobacz pisanie testów jednostkowych dla języka C/C++.For more information, see Writing unit tests for C/C++.

Visual Studio 2017 w wersji 15.6:Visual Studio 2017 version 15.6:

  • Dodano obsługę dynamicznej biblioteki Boost.Test pomocy technicznej.Support added for Boost.Test dynamic library support.
  • Szablon elementu Boost.Test jest teraz dostępna w środowisku IDE.A Boost.Test item template is now available in the IDE.

Aby uzyskać więcej informacji, zobacz Boost.Test Unit Testing: Biblioteka dynamiczna obsługa i nowego szablonu elementu.For more information, see Boost.Test Unit Testing: Dynamic Library support and New Item Template.

Visual Studio 2017 w wersji 15.7:Visual Studio 2017 version 15.7:

Funkcja CodeLens obsługiwane dodane dla projektów testów jednostkowych C++.CodeLens supported added for C++ unit test projects. Aby uzyskać więcej informacji, zobacz ogłoszenie CodeLens dla testów jednostkowych C++.For more information, see Announcing CodeLens for C++ Unit Testing.

Visual Studio diagnostyki grafikiVisual Studio graphics diagnostics

Visual Studio diagnostyki grafiki jest zestaw narzędzi do rejestrowania i analizowania problemów renderowania i wydajności w aplikacjach Direct3D.Visual Studio Graphics Diagnostics is a set of tools for recording and analyzing rendering and performance problems in Direct3D apps. Funkcje diagnostyki grafiki, może służyć z aplikacjami, które działają lokalnie na komputerze z systemem Windows, w emulatorze urządzenia Windows lub na zdalnym komputerze lub urządzeniu.Graphics Diagnostics features can be used with apps that are running locally on your Windows PC, in a Windows device emulator, or on a remote PC or device.

  • Dane wejściowe i wyjściowe dla programów do cieniowania wierzchołków i geometrii: możliwość wyświetlania danych wejściowych i wyjściowych programów do cieniowania wierzchołków i programów do cieniowania geometrii została jedna z najbardziej pożądanych funkcji i jest teraz obsługiwana w narzędziach.Input & Output for Vertex and Geometry shaders: The ability to view input and output of vertex shaders and geometry shaders has been one of the most requested features, and it is now supported in the tools. Po prostu wybierz etap programu VS lub GS w widoku etapy potoku, aby rozpocząć sprawdzanie danych wejściowych i wyjściowych w tabeli poniżej.Simply select the VS or GS stage in the Pipeline Stages view to start inspecting its input and output in the table below.

    Dane wejściowe/wyjściowe dla programów do cieniowania

  • Wyszukiwanie i filtrowanie w tabeli obiektu: zapewnia szybki i łatwy sposób Znajdź zasoby, czego szukasz.Search and filter in the object table: Provides a quick and easy way to find the resources you're looking for.

    Wyszukaj

  • Historia zasobów: ten nowy widok oferuje uproszczony sposób wyświetlania historii całego modyfikacja zasobu, ponieważ został on użyty podczas renderowania przechwyconej ramki.Resource History: This new view provides a streamlined way of seeing the entire modification history of a resource as it was used during the rendering of a captured frame. Aby wywołać historii dla dowolnego zasobu, po prostu kliknij ikonę zegara, obok hiperłącze żadnych zasobów.To invoke the history for any resource, simply click the clock icon next to any resource hyperlink.

    Historia zasobów

    Spowoduje to wyświetlenie nowej Historia zasobów okna narzędzi, wypełniony historii zmian zasobu.This will display the new Resource History tool window, populated with the change history of the resource.

    Zmiana historię zasobu

    Należy pamiętać, że jeśli Twoje przechwycenia za pomocą wywołania pełny stos przechwytywania włączone (programu Visual Studio > Narzędzia > Opcje w obszarze Graphics Diagnostics), kontekst każdego zdarzenia zmiany może być szybko ustalona i inspekcji w obrębie projektu programu Visual Studio.Note that if your frame was captured with full call stack capturing enabled (Visual Studio > Tools > Options under Graphics Diagnostics), then the context of each change event can be quickly deduced and inspected within your Visual Studio project.

  • Statystyka interfejsu API: wyświetlić podsumowanie wysokiego poziomu użycia interfejsu API w sieci ramki.API Statistics: View a high-level summary of API usage in your frame. Może to być przydatne w odnajdywania wywołań, mogą nie okazuje się, że wprowadzasz w ogóle lub wywołania, które wykonujesz zbyt dużej ilości.This can be handy in discovering calls you may not realize you’re making at all or calls you are making too much. W tym oknie jest dostępna za pośrednictwem Widok > Statystyka interfejsu API w analizatora grafiki programu Visual Studio.This window is available via View > API Statistics in Visual Studio Graphics Analyzer.

    Statystyka interfejsu API

  • Statystyki pamięci: wyświetlić ilość pamięci, sterownik jest przydzielanie zasobów tworzenie w ramce.Memory Statistics: View how much memory the driver is allocating for the resources you create in the frame. W tym oknie jest dostępna za pośrednictwem Widok > Statystyki pamięci w analizatora grafiki programu Visual Studio.This window is available via View > Memory Statistics in Visual Studio Graphics Analyzer. Dane mogą być kopiowane do pliku CSV do wyświetlenia w arkuszu kalkulacyjnym, klikając prawym przyciskiem myszy i wybierając pozycję Kopiuj wszystko.Data can be copied to a CSV file for viewing in a spreadsheet by right-clicking and choosing Copy All.

    Statystyka pamięci

  • Weryfikacja ramki: nową listę błędów i ostrzeżeń zapewnia łatwy sposób można przejść do listy zdarzeń oparte na potencjalnych problemów wykrytych przez warstwę debugowania Direct3D.Frame Validation: The new errors and warnings list provides an easy way to navigate your event list based on potential issues detected by the Direct3D debug layer. Kliknij przycisk Widok > Weryfikacja ramki w analizatora grafiki programu Visual Studio, aby otworzyć okno.Click View > Frame Validation in Visual Studio Graphics Analyzer to open the window. Następnie kliknij przycisk Uruchom weryfikację można rozpocząć analizy.Then click Run Validation to start the analysis. Może upłynąć kilka minut, w zależności od złożoności ramki.It can take several minutes to complete, depending on the frame's complexity.

    Weryfikacja ramki

  • Analiza klatek dla D3D12: analizy klatek Użyj do analizowania wydajności wywołań rysowania za pomocą kierowane eksperymenty "co jeśli".Frame Analysis for D3D12: Use Frame Analysis to analyze draw call performance with directed "what-if" experiments. Przejdź na kartę analizy klatek i przeprowadzać analizę, aby wyświetlić raport.Switch to the Frame Analysis tab and run analysis to view the report. Aby uzyskać więcej informacji, obejrzyj GoingNative 25: analiza klatek grafiki programu Visual Studio wideo.For more details, watch the GoingNative 25: Visual Studio Graphics Frame Analysis video.

    Analiza klatek

  • Ulepszenia użycia procesora GPU: otwierać ślady wykonane za pomocą profilera użycie procesora GPU w usłudze Visual Studio przy użyciu procesora GPU widoku lub narzędzia Analizator wydajności Windows (WPA), aby uzyskać bardziej szczegółowe analizy.GPU Usage Improvements: Open traces taken via the Visual Studio GPU Usage profiler with either GPU View or the Windows Performance Analyzer (WPA) tool for more detailed analysis. Jeśli masz zestaw narzędzi wydajności Windows, które zostały zainstalowane będzie dwa hiperłącza, jeden dla WPA i innych widoku procesora GPU w prawym dolnym rogu omówienie sesji.If you have the Windows Performance Toolkit installed there will be two hyperlinks, one for WPA and other for GPU View, at the bottom right of the session overview.

    Użycie procesora GPU

    Ślady otwierane w widoku GPU za pośrednictwem tego łącza pomocy technicznej synchronizowane powiększanie i przesuwanie na osi czasu między VS i wyświetlanie procesora GPU.Traces opened in GPU View via this link support synchronized zooming and panning in the timeline between VS and GPU View. Pole wyboru w programie VS jest używana do kontroli, czy włączona jest synchronizacja, czy nie.A checkbox in VS is used to control whether synchronization is enabled or not.

    Wyświetl procesora GPU