Nowości w języku Visual C++ wVisual Studio 2017Visual Studio 2017What's New for Visual C++ in Visual Studio 2017Visual Studio 2017

Visual Studio 2017Visual Studio 2017udostępnia wiele aktualizacji i poprawki dla środowiska Visual C++. brings many updates and fixes to the Visual C++ environment. Firma Microsoft usunęła ponad 250 usterek i zgłoszonych problemów w kompilatorze i narzędziach — wiele z nich było zgłoszonych przez klientów za pośrednictwem witryny Microsoft Connect.We've fixed over 250 bugs and reported issues in the compiler and tools, many submitted by customers through Microsoft Connect. Dziękujemy za zgłaszanie usterek!Thank you for reporting bugs! Aby uzyskać więcej informacji dotyczących nowości we wszystkich programu Visual Studio, odwiedź nowości Visual Studio 2017Visual Studio 2017 .For more information on what's new in all of Visual Studio, please visit What's new in Visual Studio 2017Visual Studio 2017.

kompilator C++C++ compiler

Ulepszenia zgodność 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ść języka C++ w programie Visual Studio 2017.For detailed information, see C++ Conformance Improvements in Visual Studio 2017.

Nowe przełączniki kompilatoraNew compiler switches

-/STD:c ++ 14 i /std:c ++ najnowsze: te przełączniki kompilatora umożliwiają wyrazić zgodę na określonych wersji ISO C++ język w projekcie programowania.-/std:c++14 and /std:c++latest: These compiler switches enable you to opt-in to specific versions of the ISO C++ programming language in a project. Aby uzyskać więcej informacji, zobacz -std (Określ wersję Standard języka).For more information, see -std (Specify Language Standard Version). Większość nowych wersji roboczej standardowych funkcji jest chroniony przez /std:c ++ najnowsze przełącznika.Most of the new draft standard features are guarded by the /std:c++latest switch.

Visual Studio 2017 wersji 15 ustęp 3: /std:c ++ 17 opcji udostępnia zestaw funkcji C ++ 17 implementowane przez kompilator języka Visual C++.Visual Studio 2017 version 15.3: The /std:c++17 option enables the set of C++17 features implemented by the Visual C++ compiler. Ta opcja powoduje wyłączenie kompilator i biblioteki standardowej obsługi funkcji, które zostały zmienione lub nowych w nowszych wersjach aktualizacji pracy roboczą i usterką standardu C++.This option disables compiler and standard library support for features that are changed or new in more recent versions of the Working Draft and defect updates of the C++ Standard.

-/ ograniczająca-: Włącz wszystkie standardy strict zgodność-opcje kompilatora i wyłączyć najbardziej rozszerzenia 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). (Funkcja domyślnie wyłączona, ale będzie na domyślnie w pewnym momencie w przyszłości).(Off by default but will be on by default at some point in the future.)

-/Diagnostics: Włącz wyświetlania numer wiersza, numer wiersza i kolumny, lub numer wiersza i kolumny i karetki w wierszu kodu, w którym zostało znalezione 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.

-/Debug:fastlink:-/debug:fastlink:
Włącz do 30% szybciej konsolidowania przyrostowego razy (vs. Visual Studio 2015) przed kopiowaniem wszystkie informacje w pliku PDB debugowania.Enable up to 30% faster incremental link times (vs. Visual Studio 2015) by not copying all debug information into the PDB file. Zamiast tego pliku PDB wskazuje informacji debugowania dla obiekt i biblioteki plików używany do tworzenia pliku wykonywalnego.The PDB file instead points to the debug information for the object and library files used to create the executable. Zobacz cykl w programie VS "15" z /Debug:fastlink kompilacji C++ szybciej i zalecenia dotyczące szybkości kompilacji C++ w programie Visual Studio.See Faster C++ build cycle in VS “15” with /Debug:fastlink and Recommendations to speed C++ builds in Visual Studio.

Visual Studio 2017Visual Studio 2017Umożliwia przy użyciu/SDL z / await. allows using /sdl with /await. Firma Microsoft usunęła ograniczenie/RTC z procedury wspólnej.We removed the /RTC limitation with Coroutines.

Visual Studio 2017 wersji 15,5 cala: kompilatora Visual C++ obsługuje około 75% C ++ 17 funkcje, takie jak powiązania strukturalnych constexpr wyrażeń lambda, if constexpr, wbudowane zmienne, fold wyrażeń i dodawanie noexcept do typu System.Visual Studio 2017 version 15.5: The Visual C++ compiler supports about 75% of C++17 features, 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 przełącznika.These are available under the /std:c++17 switch. Tryb /permissive-conformance obsługuje częściowe dwufazowego nazw wyszukiwania.The /permissive- conformance mode includes partial support for two-phase name lookup. Aby uzyskać więcej informacji, zobacz ulepszenia zgodność języka C++ w programie Visual Studio 2017.For more information, see C++ Conformance Improvements in Visual Studio 2017.

CODEGEN, zabezpieczeń, diagnostyki i kontroli wersjiCodegen, security, diagnostics and versioning

Tej wersji wprowadzono kilka ulepszeń optymalizacji, generowanie 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 w zakresie przepełnienia buforu, a funkcja /guard:cf chroni teraz 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ść elemencie _MSC_VER wbudowane makro preprocesora jest teraz monotonicznie aktualizowany po każdej aktualizacji narzędzi programu 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 kompilatora Visual C++ w wersji.For more information, see Visual C++ Compiler Version.
  • Nowy układ zestawu narzędzi: kompilacji powiązane narzędzi i kompilatora ma nowej struktury 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 side-by-side instalacji 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ędzi kompilatora 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 C++ w programie VS "15" Preview 5.For more information, see C++ compiler diagnostics improvements in VS "15" Preview 5.
  • Korzystając z procedury wspólnej, eksperymentalne — słowo kluczowe "yield" (dostępny w obszarze / await przełącznika) została usunięta.When using co-routines, the experimental keyword "yield" (available under the /await switch) has been removed. Kod powinien zostać zaktualizowany do użycia 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 wersji 15 ustęp 3: dodatkowe ulepszenia diagnostyki kompilatora.Visual Studio 2017 version 15.3: Additional improvements to diagnostics in the compiler. Aby uzyskać więcej informacji, zobacz diagnostycznych ulepszeń w programie Visual Studio 2017 15.3.0.For more information, see Diagnostic Improvements in Visual Studio 2017 15.3.0.

Visual Studio 2017 wersji 15,5 cala: wydajność środowiska uruchomieniowego Visual C++ w dalszym ciągu poprawy z powodu jakości lepiej wygenerowanego kodu.Visual Studio 2017 version 15.5: Visual C++ runtime performance continues to improve due to better generated code quality. Oznacza to, czy po prostu ponownie skompilować kod i aplikacji po prostu działa szybciej.This means that you can simply recompile your code, and your app just runs faster. Niektóre optymalizacje kompilatora są całkowicie nowe, takich jak vectorization warunkowego magazynów skalarne, łączenie sin(x) wywołania i cos(x) do nowego sincos(x) i eliminacja nadmiarowe instrukcji Optymalizator 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ą ulepszenia istniejących funkcji, takich jak Algorytm heurystyczny wektoryzowania wyrażenia warunkowego, lepszej optymalizacji pętli i codegen min/max 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 implementacji nowego i szybsze/OPT: ICF, co może skutkować do 9 speedups czas łącza %, a istnieją inne poprawki wydajności w "konsolidowania przyrostowego".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 (łącze przyrostowo).For more information, see /OPT (Optimizations) and /INCREMENTAL (Link Incrementally).

Visual C++ obsługuje jest AVX firmy Intel-512, łącznie z instrukcjami długość wektora nowych funkcji w AVX 512 doprowadzić rejestrów szeroki 128 - i 256-bitowego.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- przełącznika może służyć do przywrócenia C ++ 14 wersja noexcept podczas w trybie C ++ 17 ogólnie.The /Zc:noexceptTypes- switch 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 z języków C ++ 17, bez konieczności ponownego zapisania wszystkie Twoje 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 usuwania specyfikacji wyjątków dynamicznych i noexcept.For more information, see Dynamic exception specification removal and noexcept.

Ulepszenia standardowa biblioteka C++C++ Standard Library improvements

  • Nieznaczne usprawnienia diagnostyki basic_string _ITERATOR_DEBUG_LEVEL != 0.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: wykonanie instrukcji basic_string::find(char) przeciąża tylko raz wywołanie traits::find.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: instrukcja basic_string::operator== sprawdza teraz 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 ciągu basic_string, który był trudny do analizy przez optymalizator kompilatora.Performance improvement: removed control coupling in basic_string which was difficult for the compiler optimizer to analyze. Usuwa VSO # 262848 "<ciąg>: reserve() zbyt dużo działa".Resolves VSO# 262848 "<string>: reserve() does too much work". Należy pamiętać, że dla wszystkich krótkich ciągów wywoływanie rezerwy nadal ma niezerowy koszt bezczynności.Note that for all short strings, calling reserve still has nonzero cost to do nothing.
  • Dodaliśmy obiekty <any>, <string_view>, apply() i make_from_tuple().We added <any>, <string_view>, apply(), make_from_tuple().
  • Instrukcja std::vector została przejrzana pod kątem prawidłowości i wydajności: tworzenie aliasów podczas wstawiania/umieszczania jest teraz poprawnie obsługiwane zgodnie z wymaganiami standardu. Zapewniana jest teraz gwarancja silnego wyjątku, gdy jest to wymagane przez Standard, za pośrednictwem funkcji move_if_noexcept() i innej logiki, a wstawianie/umieszczanie wykonuje mniej operacji na elementach.std::vector has been overhauled for correctness and performance: aliasing during insertion/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 teraz dereferencji ozdobne wskaźniki o wartości null.The C++ Standard Library now avoids dereferencing null fancy pointers.
  • Dodano obiekty <optional>, <variant>, shared_ptr::weak_type oraz <cstdalign>.Added <optional>, <variant>, shared_ptr::weak_type, and <cstdalign>.
  • Włączono słowo kluczowe constexpr języka C++14 w wyrażeniach min/max/minmax(initializer_list) oraz min_element/max_element/minmax_element().Enabled C++14 constexpr in min/max/minmax(initializer_list) and min_element/max_element/minmax_element().
  • Zwiększona wydajność funkcji weak_ptr::lock().Improved weak_ptr::lock() performance.
  • Naprawiono operator przypisania przeniesienia obiektu std::promise, który mógł wcześniej spowodować zablokowanie kodu na stałe.Fixed std::promise's move assignment operator, which previously could cause code to block forever.
  • Naprawiono błędy kompilatora dotyczące niejawnej konwersji struktury atomic<T *> do T *.Fixed compiler errors with atomic<T *>'s implicit conversion to T *.
  • Obiekt pointer_traits<Ptr> wykrywa teraz prawidłowo Ptr::rebind<U>.pointer_traits<Ptr> now correctly detects Ptr::rebind<U>.
  • Naprawiono brakujący kwalifikator const w operatorze odejmowania obiektu move_iterator.Fixed a missing const qualifier in move_iterator's subtraction operator.
  • Naprawiono ciche, nieprawidłowe generowanie kodu dla stanowych programów przydzielających definiowanych przez użytkownika żądających obiektów propagate_on_container_copy_assignment oraz 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&().
  • W celu zwiększenia przepływności kompilatora, nagłówki standardowa biblioteka C++ teraz uniknąć, włączając deklaracje dla funkcje wewnętrzne kompilatora niepotrzebne.To increase compiler throughput, C++ Standard Library headers now avoid including declarations for unnecessary compiler intrinsics.
  • Nieco ulepszona diagnostyka kompilatora dla nieprawidłowych wywołań bind().Slightly improved compiler diagnostics for incorrect bind() calls.
  • Zwiększono wydajność std::string / std::wstring przez przeniesienie konstruktorów za więcej niż 3 xImproved the performance of std::string/std::wstring's move constructors by more than 3x
  • Aby uzyskać pełną listę biblioteki standardowej Zobacz improvments standardowej biblioteki poprawki w VS 2017 RTM.For a complete list of Standard Library improvments see the Standard Library Fixes In VS 2017 RTM.

Visual Studio 2017 wersji 15 ustęp 3Visual Studio 2017 version 15.3

C ++ 17 funkcjiC++17 features

Zastosowano kilka dodatkowych funkcji C ++ 17.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 propagację triviality skopiowania/przeniesienia".Implemented P0602R0 "variant and optional should propagate copy/move triviality".
  • Standardowa biblioteka teraz oficjalnie zaakceptować RTTI dynamiczne są wyłączone przez czasie.The Standard Library now officially tolerates dynamic RTTI being disabled via /GR-. dynamic_pointer_cast() i rethrow_if_nested() z założenia wymaga dynamic_cast, dzięki czemu można biblioteki standardowej teraz oznacza je jako = delete w czasie.dynamic_pointer_cast() and rethrow_if_nested() inherently require dynamic_cast, so the Standard Library now marks them as =delete under /GR-.
  • Nawet po RTTI dynamicznej została wyłączona za pomocą czasie, "statyczne RTTI" (w postaci typeid(SomeType)) jest nadal dostępny 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. Standardowa biblioteka obsługuje teraz wyłączenie to, za pośrednictwem /D_HAS_STATIC_RTTI = 0.The Standard Library now supports disabling this too, via /D_HAS_STATIC_RTTI=0. Należy pamiętać, wyłączenia std::any, target() std::function w i target_type() oraz get_deleter() shared_ptr firmy.Note that this will disable std::any, std::function's target() and target_type(), and shared_ptr's get_deleter().

Poprawność poprawkiCorrectness fixes

  • Standardowa biblioteka kontenery teraz clamp ich max_size() do numeric_limits<difference_type>:: max() zamiast size_type do maksymalnej. To zapewnia, że wynik distance() na Iteratory z tego kontenera jest można przedstawić w distance() typ zwracany.Standard Library containers now clamp their max_size() to numeric_limits<difference_type>::max() rather than size_type's max. This ensures that the result of distance() on iterators from that container is representable in the return type of distance().
  • Stałe Brak auto_ptr specjalizacji<void>.Fixed missing specialization auto_ptr<void>.
  • Algorytmy meow_n() wcześniej kompilacja nie powiodła się, jeśli długość argumentu nie jest typem całkowitym; teraz mogła przekonwertować długości niecałkowity difference_type Iteratory.The meow_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ż emituje ostrzeżenia w standardowej bibliotece o zawężanie z typu double na float.normal_distribution<float> no longer emits warnings inside the Standard Library about narrowing from double to float.
  • Usunięto niektóre operacje basic_string —, które zostały porównanie z npos zamiast max_size(), gdy sprawdzanie przepełnienia 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 (blokady, relative_time predykatu) oczekiwania przez cały czas względny 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 będzie czekać przez tylko jeden interwał względne czasu.Now, it will wait for only a single interval of the relative time.
  • przyszłe:: get() teraz unieważnia przyszłości jako standard wymaga.future::get() now invalidates the future, as the standard requires.
  • iterator_traits<void * > się poważny błąd, ponieważ podjęto próbę utworzenia void&; teraz prawidłowo staje się puste struktury umożliwia użycie iterator_traits w "jest iteratora" techniki SFINAE warunki.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.
  • Zgłoszone przez Clang - wsystem —-headers ostrzeżenia zostały usunięte.Some warnings reported by Clang -Wsystem-headers were fixed.
  • Usunięto również "Specyfikacja wyjątku w deklaracji niezgodność z poprzednią deklaracją" zgłoszone przez Clang - Wmicrosoft-wyjątku spec.Also fixed "exception specification in declaration does not match previous declaration" reported by Clang -Wmicrosoft-exception-spec.
  • Usunięto również mem inicjator listy ostrzeżeń porządkowania zgłaszanych przez Clang i C1XX.Also fixed mem-initializer-list ordering warnings reported by Clang and C1XX.
  • Kontenery nieuporządkowaną nie wymiany ich hashers lub predykaty, gdy same kontenery zostały zamienione.The unordered containers did not swap their hashers or predicates when the containers themselves were swapped. Teraz je.Now they do.
  • Wiele operacji wymiany kontenera zostały oznaczone noexcept (zgodnie z naszym biblioteki standardowej zamierza nigdy nie zgłoszenia wyjątku podczas wykrywania stanu bez przydzielania równości niezdefiniowane zachowanie propagate_on_container_swap z systemem innym niż).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).
  • Wektor wiele<bool> operacje zostały oznaczone noexcept.Many vector<bool> operations are now marked noexcept.
  • Standardowa biblioteka będzie wymuszać teraz dopasowywania value_types alokatora (tryb C ++ 17) z kreskowania ucieczki rezygnacji z.The Standard Library will now enforce matching allocator value_types (in C++17 mode) with an opt-out escape hatch.
  • Usunięto niektóre warunki gdzie niezależne-range-insert into basic_strings czy szyfrują zawartość ciągi są.Fixed some conditions where self-range-insert into basic_strings would scramble the strings' contents. (Uwaga: niezależne-range-insert into wektory nadal jest zabronione przez standardowego.)(Note: self-range-insert into vectors is still prohibited by the Standard.)
  • basic_string::shrink_to_fit() nie ma wpływu na propagate_on_container_swap programu przydzielania.basic_string::shrink_to_fit() is no longer affected by the allocator's propagate_on_container_swap.
  • STD::decay obsługuje teraz typy funkcji abominable (tj. Funkcja typy, które są cv kwalifikowaną lub kwalifikowaną ref).std::decay now handles abominable function types (i.e. function types that are cv-qualified and/or ref-qualified).
  • Zmienione dyrektyw prawidłowego uwzględniana wielkość liter i ukośniki, poprawy przenośność.Changed include directives to use proper case sensitivity and forward slashes, improving portability.
  • Stałe ostrzeżenie C4061 "moduł wyliczający"Meow"przełącznika wyliczenia, które"Kitten"nie jest jawnie obsługiwany przez etykietę case".Fixed warning C4061 "enumerator 'Meow' in switch of enum 'Kitten' is not explicitly handled by a case label". To ostrzeżenie jest wyłączone domyślnie i został rozwiązany 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 jest/W4 czystą, ale nie jest podejmowana próba można/Wall czyste.(The Standard Library is /W4 clean, but does not attempt to be /Wall clean. Wiele poza domyślnie ostrzeżenia są bardzo dużo i nie są przeznaczone do użycia na bieżąco.)Many off-by-default warnings are extremely noisy and aren't intended to be used on a regular basis.)
  • Sprawdza, czy ulepszona kontener std::list debugowania.Improved std::list's debug checks. Iteratory listy Sprawdź teraz operator -> () oraz listy:: unique() teraz oznacza Iteratory jako unieważnione.List iterators now check operator->(), and list::unique() now marks iterators as invalidated.
  • Stałe używa alokatora metaprogramowania w spójnej kolekcji.Fixed uses-allocator metaprogramming in tuple.

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

  • Przepracowany wokół interakcji z noexcept, który uniemożliwił ze śródwierszowaniem std:: atomic do implementacji w funkcje programu wykorzystujące strukturalnych obsługi wyjątków (SEH).Worked around interactions with noexcept which prevented inlining std::atomic's implementation into functions that use Structured Exception Handling (SEH).
  • Zmienić standardowa biblioteka _Deallocate() wewnętrznej funkcji w celu zoptymalizowania na mniejsze kod, dzięki któremu można wbudować 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.
  • Zmienić std::try_lock() umożliwia rozwinięcie pakietu zamiast rekursji.Changed std::try_lock() to use pack expansion instead of recursion.
  • (Ulepszone std::lock) zakleszczenie unikania algorytm używany operacji lock() zamiast Obracająca na wszystkich blokad try_lock () s.Improved std::lock()'s deadlock avoidance algorithm to use lock() operations instead of spinning on all the locks' try_lock()s.
  • Włączono optymalizację nazwanych wartości zwracanej w system_category::message().Enabled the Named Return Value Optimization in system_category::message().
  • połączeniu i rozłączenia teraz wystąpienia N + 1 typów, zamiast 2N + 2 typów.conjunction and disjunction now instantiate N + 1 types, instead of 2N + 2 types.
  • STD::Function tworzy już przydzielania maszyny pomocy technicznej dla każdego wymazane typu można wywołać, ulepszanie przepływności i zmniejszenie rozmiaru .obj w programach, które przekazać wiele różnych wyrażeń lambda do 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 operacje std::allocator ręcznie śródwierszowych, zmniejszyć rozmiar kodu w kodzie, który współdziała z std::allocator za pośrednictwem allocator_traits — w tylko (tj. 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 (i.e. most code).
  • C ++ 11 alokatora minimalnego interfejsu jest teraz obsługiwany przez biblioteki standardowej wywoływania allocator_traits — bezpośrednio, zamiast zawijania programu przydzielania w _Wrap_alloc Wewnętrzna klasa.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 kodu wygenerowany dla pomocy technicznej programu przydzielania, zwiększa możliwości Optymalizator Przyczyna o biblioteki standardowej kontenery w niektórych przypadkach i zapewnia lepsze debugowania (jak widoczny z alokatora typu, a nie _Wrap_alloc<danego typu alokatora> w debugerze).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 metaprogramowania dla allocator::reference niestandardowych, które allocators — faktycznie nie są dozwolone dostosować.Removed metaprogramming for customized allocator::reference, which allocators aren't actually allowed to customize. (Allocators — ułatwia kontenery, użyj wskaźników ozdobne, ale nie ozdobne odwołań.)(Allocators can make containers use fancy pointers but not fancy references.)
  • Kompilator frontonu został jednocześnie dekodowania Iteratory debugowania w opartej na zakresie dla pętle, poprawia wydajność debugowania kompilacji.The compiler front-end was taught to unwrap debug iterators in range-based for-loops, improving the performance of debug builds.
  • basic_string — w wewnętrznej zmniejszania ścieżka shrink_to_fit() i reserve() nie jest już w ścieżce ponowne przydzielanie operacji zmniejszenia rozmiaru kodu dla wszystkich członków mutating.basic_string's 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 — obiektu wewnętrznego wzrostu ścieżka nie jest już w ścieżce shrink_to_fit().basic_string's internal grow path is no longer in the path of shrink_to_fit().
  • operacje mutacja w basic_string — teraz są rozkładane na — przydzielanie szybkiej ścieżki i alokowania funkcje powolną ścieżkę, dzięki czemu częściej w typowych przypadkach realokacja nie być wbudowane w obiekty wywołujące.basic_string's 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.
  • konstrukcja teraz operacje mutacja w basic_string — przydzielić buforów żądaną stanu zamiast zmiany rozmiaru w miejscu.basic_string's mutating operations now construct reallocated buffers in the desired state rather than resizing in place. Na przykład wstawianie na początku ciąg teraz przenosi zawartości po wstawieniu dokładnie raz (w dół lub w buforze nowoprzydzielonych), zamiast dwukrotnie w tym przypadku reallocating (nowoprzydzielonych 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 wywoływania biblioteki standardowe C w <ciąg> teraz pamięci podręcznej adres errno firmy do usunięcia powtarzane interakcji z protokołem TLS.Operations calling the C standard library in <string> now cache errno's address to remove repeated interaction with TLS.
  • Uproszczony is_pointer — implementacji.Simplified is_pointer's implementation.
  • Zakończono zmiana opartą na strukturze/void_t na podstawie funkcja techniki SFINAE wyrażeń.Finished changing function-based Expression SFINAE to struct/void_t-based.
  • Standardowa biblioteka algorytmów uniknąć teraz postincrementing Iteratory.Standard Library algorithms now avoid postincrementing iterators.
  • Ostrzeżenia obcięcie stałej, używając 32-bitowych allocators — w systemach 64-bitowych.Fixed truncation warnings when using 32-bit allocators on 64-bit systems.
  • STD::Vector przypisania przenoszenia jest teraz bardziej efektywne w przypadku innych niż alokatora równości z systemem innym niż POCMA przez ponowne użycie buforu, gdy jest to możliwe.std::vector move assignment is now more efficient in the non-POCMA non-equal-allocator case, by reusing the buffer when possible.

Zwiększyć czytelność, a inne ulepszeniaReadability and other improvements

  • Standardowa biblioteka teraz używa języka 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 szablonów aliasów wewnętrznie.The Standard Library now uses alias templates internally.
  • Standardowa biblioteka korzysta teraz nullptr wewnętrznego, zamiast nullptr_t {}.The Standard Library now uses nullptr internally, instead of nullptr_t{}. (Wewnętrzny użycie 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.)
  • Standardowa biblioteka korzysta teraz std::move() wewnętrznego, zamiast stylistically niewłaściwie korzysta z std::forward().The Standard Library now uses std::move() internally, instead of stylistically misusing std::forward().
  • Zmienione static_assert (wartość false, "komunikat") do #error wiadomości.Changed static_assert(false, "message") to #error message. Zwiększa to diagnostyki kompilatora, ponieważ #error natychmiastowe zatrzymanie kompilacji.This improves compiler diagnostics because #error immediately stops compilation.
  • Standardowa biblioteka już oznacza funkcji jako __declspec(dllimport).The Standard Library no longer marks functions as __declspec(dllimport). Nowoczesny konsolidatora technologii nie wymaga już to.Modern linker technology no longer requires this.
  • Wyodrębnionego techniki SFINAE do domyślnych argumentów szablonu, który upraszcza w porównaniu do zwrócenia typów i typy argumentów funkcji.Extracted SFINAE to default template arguments, which reduces clutter compared to return types and function argument types.
  • Sprawdza debugowania <losowe> teraz używać maszyn zwykle biblioteki standardowej, zamiast _Rng_abort() wewnętrznej funkcji, która wywołuje fputs() 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 zachowywane dla zgodności plików binarnych, ale została usunięta w następnej wersji biblioteki standardowej binarnie niezgodna.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 wersji 15,5 calaVisual Studio 2017 version 15.5

Kilka funkcje standardowej biblioteki zostały dodane, przestarzałe lub usunięte zgodnie z języka C ++ 17 standard.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ść języka C++ w programie Visual Studio.For more information see C++ conformance improvements in Visual Studio.

Nowe funkcje eksperymentalneNew experimental features

  • Obsługa eksperymentalna następujących algorytmów równoległych:Experimental support for the following parallel algorithms:
    • all_ofall_of
    • any_ofany_of
    • for_eachfor_each
    • for_each_nfor_each_n
    • none_ofnone_of
    • Zmniejszreduce
    • replacereplace
    • replace_ifreplace_if
    • sortsort
  • Podpisy dla następujących algorytmów równoległych zostały dodane, ale nie została zrównoleglona w tej chwili; Profilowanie pokazanego żadnych korzyści parallelizing algorytmów 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:
    • copycopy
    • copy_ncopy_n
    • fillfill
    • fill_nfill_n
    • movemove
    • reversereverse
    • reverse_copyreverse_copy
    • rotaterotate
    • rotate_copyrotate_copy
    • swap_rangesswap_ranges

Ulepszenia i wydajnościPerformance fixes and improvements

  • basic_string —<char16_t > teraz angażujący optymalizacje funkcji memcmp/memcpy/itp. tego basic_string —<wchar_t > angażujący.basic_string<char16_t> now engages memcmp/memcpy/etc. optimizations that basic_string<wchar_t> engages.
  • Ograniczenie Optymalizator, który uniemożliwił wskaźników funkcji z możliwości wbudowanego udostępnianych przez naszych "unikać kopiowania funkcji" pracy w Visual Studio 2015 Update 3 zostały działał wokół, przywracanie wydajności lower_bound (iter, iter, wskaźnik funkcji).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).
  • Set_union — został zmniejszony przez Odkodowywanie Iteratory przed zaewidencjonowaniem kolejności i obciążenie debugowania iteratora matki kolejności weryfikacji danych wejściowych w celu obejmuje, set_difference —, set_symmetric_difference —.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 już znajdują się w pozycji.std::inplace_merge now skips over elements that are already in position.
  • Konstruowanie std::random_device już tworzy i następnie niszczy std::string.Constructing std::random_device no longer constructs and then destroys a std::string.
  • STD::Equal i std::partition miały wątkowość skok przebiegu optymalizacji, która zapisuje porównania iteratora.std::equal and std::partition had a jump-threading optimization pass which saves an iterator comparison.
  • Gdy std::reverse przesunie się wskaźniki do typu T trivially copyable, będzie teraz wysyłania odręcznie zwektoryzowane implementacji.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 nauczanych sposobu wysyłania do funkcji memset / funkcji memcmp std::byte gsl::byte (i innych wyliczeniach char-ish i Wylicz klasy).std::fill, std::equal, and std::lexicographical_compare were taught how to dispatch to memset / memcmp for std::byte and gsl::byte (and other char-ish 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 wymagają zmiany.Note that std::copy dispatches using is_trivially_copyable and thus didn't need any changes.
  • STL nie zawiera już którego tylko zachowanie było typów innych niż — trivially — które można zniszczyć destruktory puste nawiasy.The STL no longer contains empty-braces destructors whose only behavior was to make types non-trivially-destructible.

Poprawność poprawkiCorrectness fixes

  • STD::partition teraz wywołuje 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.
  • Naprawiono prób, aby uniknąć magicznych danych statycznych w wątkach w 15 ustęp 3 w 15,5 cala.Attempts to avoid magic statics in 15.3 have been repaired in 15.5.
  • STD::Atomic<T > nie wymaga już T, aby być domyślnie umożliwia konstrukcji.std::atomic<T> no longer requires T to be default constructible.
  • Sterty algorytmów trwać logarytmicznej już do potwierdzenia czasu liniowego, czy dane wejściowe są w rzeczywistości sterty włączenie 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.
  • funkcji __declspec(Allocator) jest teraz chroniony dla C1XX zapobiec ostrzeżenia Clang, którego 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ępna jako stałą czasu kompilacji.basic_string::npos is now available as a compile time constant.
  • STD::Allocator teraz poprawnie obsługuje alokacji nadmiernie wyrównane typy — typy, których wyrównania jest większy niż max_align_t — w trybie C ++ 17 (chyba że są wyłączone przez /Zc:alignedNew-).std::allocator now properly handles allocation of over-aligned types - types whose alignment is greater than max_align_t – in C++17 mode (unless disabled by /Zc:alignedNew-). Na przykład wektory obiektów z wyrównaniem 16 i 32-bajtowych będzie teraz prawidłowo wyrównać dla SSE / instrukcji AVX.For example, vectors of objects with 16 or 32-byte alignment will now be properly aligned for SSE / AVX instructions.

Inne bibliotekiOther Libraries

Obsługa biblioteki typu open sourceOpen source library support

Vcpkg to narzędzie wiersza polecenia open source, które znacząco upraszcza proces pobierania i tworzenia biblioteki statycznej typu 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 wersji 15,5 calaVisual Studio 2017 version 15.5

Zestaw SDK CPPRest 2.9.0CPPRest SDK 2.9.0

CPPRestSDK, i platform interfejsu API sieci web dla języka C++, została zaktualizowana 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 serwisie GitHub.For more information, see CppRestSDK 2.9.0 is available on GitHub.

ATLATL

  • Jeszcze inny zestaw poprawki zgodności wyszukiwanie nazwYet another set of name-lookup conformance fixes
  • Istniejące konstruktory przenoszenia i przenieść operatory przypisania są teraz prawidłowo oznaczone jako z systemem innym niż zgłaszanieExisting move constructors and move assignment operators are now properly marked as non-throwing
  • Pomiń UN prawidłowy ostrzeżenie C4640 o wątku init bezpieczne z lokalnych danych statycznych w wątkach w atlstr.hUn-suppress valid warning C4640 about thread safe init of local statics in atlstr.h
  • Wątek bezpiecznego inicjowania lokalnych danych statycznych w wątkach automatycznie był wyłączony w zestawie narzędzi XP podczas [za pomocą ALT i tworzenie 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. W ustawieniach projektu można dodać parametr /Zc:threadSafeInit, jeśli wymagane jest wyłączenie bezpiecznego wątkowo inicjowania.You can add /Zc:threadSafeInit- in your Project settings if having thread safe initialization off is desired.

Środowiska uruchomieniowego Visual C++Visual C++ runtime

  • Nowy nagłówek "cfguard.h" Ochrona przepływu sterowania symboli.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 wersji 15 ustęp 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 bezpośrednio uruchamia Kreator dodawania klasy.Add Class now launches the Add Class wizard directly. Wszystkie elementy, które był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.
  • Win32 projekty są teraz kategorii pulpitu systemu Windows w nowy projekt okna dialogowego.Win32 projects are now under the Windows Desktop category in the New Project dialog.
  • Szablony konsoli systemu Windows i aplikacji klasycznych umożliwiają teraz tworzenie projektów bez wyświetlania kreatora.The Windows Console and Desktop Application templates now create the projects without displaying a wizard. W tej samej kategorii jest teraz dostępny Kreator aplikacji klasycznej systemu Windows, który oferuje te same opcje, co poprzednio.There's a new Windows Desktop Wizard now under the same category that displays the same options as before.

Visual Studio 2017 wersji 15,5 cala: operacje kilka C++, które używają aparatu IntelliSense dla nawigacji refaktoryzacji i kod uruchamiane znacznie szybciej.Visual Studio 2017 version 15.5: Several C++ operations that use the IntelliSense engine for refactoring and code navigation run much faster. Następujące numery są oparte na rozwiązaniu Visual Studio chromu 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
Zmiana podpisuChange Signature 4.5 x4.5x
Znajdź wszystkie odwołaniaFind All References 4,7 x4.7x

C++ obsługuje teraz Ctrl + kliknięcie, przejdź do definicji, dzięki łatwo myszy nawigacji do definicji.C++ now supports Ctrl+Click GoTo Definition, making mouse navigation to definitions easy. Wizualizator struktury z pakietu Narzędzia Power wydajności jest teraz również zawarta w produkcie domyślnie.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 wykonywanie operacji bazy danych, takich jak przechodzenie do definicji i wyszukiwanie wszystkich odwołań, oraz znacznie skróci czas analizy początkowej rozwiązania.This will speed up database operations like Go To Definition and Find All References, and will significantly improve initial solution parse time. Ustawienie został przeniesiony do narzędzia | Opcje | Edytor tekstu | C/C++ | Zaawansowane (wcześniej znajdowało się 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).

  • Zwiększono wydajność funkcji IntelliSense w projektach i pliki nie używa prekompilowanych nagłówków — automatyczne Prekompilowanego nagłówka, zostanie utworzona dla nagłówków w bieżącym pliku.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 ulepszenia IntelliSense dla C++ - predykcyjnej IntelliSense & filtrowaniaSee C++ IntelliSense Improvements - Predictive IntelliSense & Filtering

  • Znajdź wszystkie odwołania (Shift + F12), teraz codebases pomaga poruszania łatwe, nawet w przypadku złożonych.Find All References (Shift+F12) now helps you get around easily, even in complex codebases. Umożliwia grupowanie zaawansowane filtrowanie, sortowanie, wyszukiwanie w wynikach i (w przypadku niektórych języków) kolorowania, dzięki czemu można uzyskać przejrzysty referencje.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 na temat tego, czy możemy Odczyt lub zapis 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.

  • Funkcja eksperymentalna dla języka C++ projektów "Szybsze ładowania projektu".The experimental feature for C++ projects 'Faster project load'. 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 na temat nowych funkcji, zobacz Announcing programu Visual Studio "15".For more information about these new features, see Announcing Visual Studio “15”.

Inne niż MSBuild projektów z otwartym folderzeNon-MSBuild projects with Open Folder

Visual Studio 2017 wprowadza funkcji "Otwórz Folder", która umożliwia kodu, kompilowanie i debugowanie folderu zawierającego 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 częścią projektu MSBuild.This makes it much simpler to get started with Visual Studio even if your project is not an MSBuild-based project. Z "Otwórz Folder" można uzyskać dostęp do zaawansowanych kodu, opis, edytowania, kompilowanie i debugowanie funkcji dostępnych w programie Visual Studio już dla projektów 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 Otwórz Folder projekty 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 wersji 15 ustęp 3:Visual Studio 2017 version 15.3:

  • Ulepszona obsługa alternatywnych kompilatory i środowiska kompilacji, takie jak MinGW i programów Cygwin.Improved support for alternative compilers and build environments such as MinGW and Cygwin. Aby uzyskać więcej informacji, zobacz przy użyciu środowiska MinGW i programów Cygwin Visual C++ i otwórz Folder.For more information, see Using MinGW and Cygwin with Visual C++ and Open Folder.
  • Dodano obsługę do definiowania globalne i zmienne konfiguracji w danym środowisku "CppProperties.json" i "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 zadania 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 generator Nindżą w CMake, łącznie z możliwością łatwego 64-bitowych platform docelowych.Improved support for CMake's Ninja generator, including the ability to easily target 64-bit platforms.

Obsługa CMake za pośrednictwem Otwórz FolderCMake support via Open Folder

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

  • Funkcja IntelliSense w języku C++ będzie działać bez konieczności tworzenia pliku CppProperties.json w folderze głównym.C++ IntelliSense will work 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 wersji 15 ustęp 3: generator Nindżą CMake dodać obsługę.Visual Studio 2017 version 15.3: Support added for the CMake Ninja generator. Aby uzyskać więcej informacji, zobacz CMake projekty w programie Visual C++.For more information, see CMake projects in Visual C++.

Visual Studio 2017 wersji 15,5 cala: importowanie istniejących CMake dodano obsługę przechowuje w pamięci podręcznej.Visual Studio 2017 version 15.5: Support added for importing existing CMake caches. Aby uzyskać więcej informacji, zobacz CMake projekty w programie Visual C++.For more information, see CMake projects in Visual C++.

Programowanie aplikacji pulpitu systemu Windows za pomocą języka 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 „Zestaw narzędzi „VC++ 2017 w wersji 141 (x86, x64)” oraz „Zestaw SDK systemu Windows 10 (10.0.14393)” da pewność, że będzie to możliwe.Installing the recommended (selected) components “VC++ 2017 v141 toolset (x86, x64)” and “Windows 10 SDK (10.0.14393)” will ensure 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 wersji 15,5 cala: narzędzia Visual C++ kompilacji (wcześniej dostępne jako autonomiczny produkt) są teraz włączone jako obciążenie w Instalatorze programu Visual Studio.Visual Studio 2017 version 15.5: 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 tworzenia projektów C++ bez 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 i v141 procesami.Both the v140 and v141 toolsets are included. Zestaw narzędzi v141 zawiera ulepszenia najnowsza w programie Visual Studio 2015 wersji 15,5 cala.The v141 toolset contains the lastest improvements in Visual Studio 2015 version 15.5. Aby uzyskać więcej informacji, zobacz programu Visual Studio Tools kompilacji zawierają teraz VS2017 i procesami MSVC VS2015.For more information, see Visual Studio Build Tools now include the VS2017 and VS2015 MSVC Toolsets.

Tworzenie Linux za pomocą 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 wersji 15,2: ulepszenia dla wielu platform kodu do udostępniania i typ wizualizacji.Visual Studio 2017 version 15.2: Improvements for cross-platform code sharing and type visualization. Aby uzyskać więcej informacji, zobacz ulepszenia Linux C++ dla wielu platform kodu do udostępniania i typ wizualizacji.For more information, see Linux C++ improvements for cross-platform code sharing and type visualization.

Visual Studio 2017 wersji 15,5 cala:Visual Studio 2017 version 15.5:

  1. Obciążenie systemu Linux została dodana obsługa rsync zamiast protokołu sftp podczas 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.
  2. Dodano obsługę wielu elementów docelowych mikrokontrolerów ARM kompilacji.Support is added for cross compilation targeting ARM microcontrollers. Aby włączyć to w instalacji wybierz programowanie Linux za pomocą obciążenia C++ i wybierz opcję dla osadzonych i rozwoju IoT.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 GCC ARM cross tools kompilacji i udostępnić do instalacji.This adds the ARM GCC cross compilation tools and Make to your installation. Aby uzyskać więcej informacji, zobacz GCC ARM Cross kompilacji, w programie Visual Studio.For more information, see ARM GCC Cross Compilation in Visual Studio.
  3. Dodano CMake obsługę.Support added for CMake. Teraz możesz pracować na istniejący kod CMake podstawowej bez konieczności przekonwertować 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 Linux.For more information, see Configure a Linux CMake Project.
  4. Uruchamianie zadań zdalnego dodano obsługę.Support added for running remote tasks. Ta funkcja umożliwia uruchamianie 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 zapewniają również możliwość kopiowania plików do systemu zdalnego.Remote tasks also provide the capability to copy files to the remote system.

Tworzenie gier z 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 przenośnych za pomocą języka C++ (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 uniwersalnych platformy systemu Windows (UWP)New options for C++ on Universal Windows Platform (UWP)

Masz teraz nowe opcje zapisu i tworzenia pakietu aplikacji C++ dla platformy uniwersalnej systemu Windows i Sklepu Windows: konwerter aplikacji pulpitu umożliwia pakietu istniejącej aplikacji klasycznych dla wdrożenia za pomocą portalu Sklepu Windows.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 App Converter to package your existing desktop application for deployment through the Windows Store. Aby uzyskać więcej informacji, zobacz przy użyciu środowiska uruchomieniowego Visual C++ w projekcie Centennial i przełączyć aplikację pulpitu do systemu Windows platformy Uniwersalnej z Mostek pulpitu.For more information, see Using Visual C++ Runtime in Centennial project and Bring your desktop app to the Universal Windows Platform (UWP) with the Desktop Bridge.

Visual Studio 2017 wersji 15,5 calaVisual Studio 2017 version 15.5
A projekt do tworzenia pakietów aplikacji systemu Windows zostanie dodany szablon projektu, który obsługuje pakowania aplikacje przy użyciu mostka pulpitu.A Windows Application Packaging Project project template is added which supports packaging desktop applications by using Desktop Bridge. Jest on dostępny w obszarze pliku | Nowy | Projekt | Zainstalowane | Visual C++ | Platforma uniwersalna systemu Windows.It is available under File | New | Project | Installed | Visual C++ | Universal Windows Platform.

Podczas zapisywania nowego kodu, można teraz używać C + +/ WinRT, standardowe projekcji języka C++ realizowane wyłącznie w pliki nagłówków środowiska uruchomieniowego systemu Windows.When writing new code, you can now use C++/WinRT, a standard C++ language projection for the Windows Runtime implemented solely in header files. Pozwala na obu autora, a korzystanie z interfejsów API środowiska wykonawczego systemu Windows przy użyciu dowolnego 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 umożliwia deweloperom C++ z dostępem do najwyższej jakości nowoczesnych interfejsu API systemu Windows.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 witrynie GitHub.For more information, see C++/WinRT Available on GitHub.

Począwszy od programu kompilacji 17025 Windows SDK niejawnego 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 włączone zestaw 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 Visual Studio 2017Visual Studio 2017 obsługuje teraz przełącznik/bigobj, który ma kluczowe znaczenie podczas kompilowania dużych projektów.The Clang/C2 toolset that ships with Visual Studio 2017Visual 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 oknie dialogowym Rozszerzenia analizy kodu na stronach właściwości projektu, a rozszerzenia zostaną uwzględnione podczas uruchamiania analizy kodu.Simply enable the checkers in the Code Analysis Extensions dialog 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 programy C++ podstawowe wskazówki.For more information, see Using the C++ Core Guidelines checkers.

CppCoreCheckCppCoreCheck

Visual Studio 2017 wersji 15 ustęp 3: dodać obsługę zasady dotyczące zarządzania zasobami.Visual Studio 2017 version 15.3: Support added for rules related to resource management.

Visual Studio 2017 wersji 15,5 cala: sprawdza nowe C++ podstawowe wskazówki obejmują poprawności wskaźnika inteligentnego, prawidłowe użycie globalnych inicjatory i używa flagowania 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 numerów ostrzeżeń, które mogą być w 15 ustęp 3 nie będą dostępne w 15,5 cala.Some warning numbers you may find in 15.3 are no longer available in 15.5. Ostrzeżenia zostały zastąpione kontroli bardziej szczegółowe.These warnings were replaced with more specific checks.

Testy jednostkoweUnit testing

Visual Studio 2017 wersji 15,5 cala: Adapter testowy Google i karty Boost.Test są teraz dostępne jako składniki projektowania aplikacji w języku C++ i są zintegrowane z usługą Eksploratora testów.Visual Studio 2017 version 15.5: Google Test Adapter and Boost.Test Adapter are now available as components of the Desktop Development with C++ and are integrated with Test Explorer. Obsługa CTest jest dodawany do projektów Cmake (przy użyciu Otwórz Folder), mimo że pełna integracja z Eksploratora 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 dla C/C++ pozwala pisać testy jednostkowe.For more information, see Writing unit tests for C/C++.

Diagnostyki grafiki w programie Visual StudioVisual Studio graphics diagnostics

Diagnostyki grafiki w programie Visual Studio jest zestaw narzędzi dla rejestrowanie i analizowanie renderowania i problemom z 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żna przy użyciu aplikacji uruchomionych lokalnie na komputerze z systemem Windows w emulatorze urządzenia z systemem 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 geometrycznego był jedną z najbardziej pożądanych funkcji, a teraz jest 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 zaznacz etap VS lub GS w widoku etapy potoku, aby rozpocząć sprawdzanie przychodzących i dane wyjściowe w poniższej tabeli.Simply select the VS or GS stage in the Pipeline Stages view to start inspecting its input and output in the table below.

    Wejścia/wyjścia dla programów do cieniowania

  • Wyszukiwanie i filtrowanie w tabeli obiektów: zapewnia szybki i łatwy sposób znaleźć zasoby 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: nowy widok zapewnia uproszczony sposób wyświetlenia historii całego modyfikacja zasobu, która była używana podczas renderowania przechwyconej ramce.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 wszystkich zasobów, wystarczy kliknąć ikonę zegara obok hyperlink żadnych zasobów.To invoke the history for any resource, simply click the clock icon next to any resource hyperlink.

    Historia zasobów

    Zostanie wyświetlone nowe okno narzędzi historii zasobów wypełniane przy użyciu 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 z włączone Przechwytywanie stosu wywołania Pełna (programu Visual Studio | Narzędzia | Opcje | Diagnostyka grafiki), a następnie kontekście każdego zdarzenia zmiany można szybko ustalona i inspekcji w ciągu projektu programu Visual Studio.Note that if your frame was captured with full call stack capturing enabled (Visual Studio | Tools | Options | 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 odnajdywaniu wywołań mogą nie uznasz, że wprowadzasz w ogóle lub wywołań tworzonego 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. To okno jest dostępny za pośrednictwem widok | Statystyki interfejsu API w analizatorze 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ć, ile pamięci sterownik jest przydzielanie zasobów utworzyć w ramce.Memory Statistics: View how much memory the driver is allocating for the resources you create in the frame. To okno jest dostępny za pośrednictwem widok | Statystyki pamięci w analizator 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 polecenie 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

  • Sprawdzanie poprawności ramki: nową listę błędów i ostrzeżeń zapewnia prosty sposób można przejść z 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 | Ramka weryfikacji w analizatora grafiki programu Visual Studio można otworzyć okna.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.

    Sprawdzanie poprawności ramki

  • Ramkę analizy D3D12: analizy ramek używany do analizowania wydajności wywołania rysowania z skierowane do eksperymentów "co jeśli".Frame Analysis for D3D12: Use Frame Analysis to analyze draw call performance with directed “what-if” experiments. Przełącz na kartę analizy ramek i uruchamiać analizę, aby wyświetlić raport.Switch to the Frame Analysis tab and run analysis to view the report. Aby uzyskać więcej informacji, obserwuj GoingNative 25: analiza ramek grafiki programu Visual Studio wideo.For more details, watch the GoingNative 25: Visual Studio Graphics Frame Analysis video.

    Analiza ramek

  • Ulepszenia użycia procesora GPU: otwierać ślady podjęte za pomocą profilera Visual Studio dotyczących użycia procesora GPU z widoku GPU lub narzędzia Analizator wydajności systemu 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 Toolkit wydajności systemu Windows zainstalowana na będzie dwa hiperłącza, jeden dla WPA i drugi dla 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 otwarty w widoku procesora GPU za pośrednictwem tego łącza pomocy technicznej synchronizowane powiększanie i przesuwanie na osi czasu między VS i 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 sterowania czy synchronizacji jest włączony, czy nie.A checkbox in VS is used to control whether synchronization is enabled or not.

    Widok procesora GPU