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

Visual Studio 2017Visual Studio 2017 udostępnia wiele aktualizacji i poprawki dla środowiska Visual C++. brings many updates and fixes to the Visual C++ environment. Wprowadzeniu stałej ponad 250 usterek i zgłoszone problemy w narzędzi i kompilatora, wiele przesyłanych przez klientów za pośrednictwem zgłosić Problem i Podaj sugestię opcje 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 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. Visual Studio 2017 wersji 15,5 cala:Visual Studio 2017 version 15.5:

Kompilator obsługuje około 75% funkcje, które są nowością w programie C ++ 17, tym strukturalnych powiązania constexpr wyrażeń lambda, if constexpr, wbudowane zmienne, fold wyrażeń i dodawanie noexcept do typu systemu.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ść języka C++ w programie Visual Studio 2017 r.For more information, see C++ Conformance Improvements in Visual Studio 2017

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

Zestawu narzędzi kompilatora MSVC w programie Visual Studio w wersji 15.7 teraz zgodne ze standardem C++.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

  • / ograniczająca-: Włącz wszystkie standardy strict zgodność-opcje kompilatora i wyłączyć większości 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). Ta opcja jest domyślnie w programie Visual Studio 2017 wersji 15,5 cala.This option is on by default in Visual Studio 2017 version 15.5. / Ograniczająca- tryb zgodności obejmuje obsługę dwufazowego odnośnik do nazwy.The /permissive- conformance mode includes 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.

  • /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: Włącz do 30% szybciej konsolidowania przyrostowego razy (vs. Visual Studio 2015) przed kopiowaniem 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. 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 2017 Umożliwia korzystanie z /SDL z / await. allows using /sdl with /await. Firma Microsoft usunęła /RTC ograniczenia z procedury wspólnej.We removed the /RTC limitation with Coroutines.

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

  • /STD:c ++ 14 i /std:c ++ najnowsze: tych opcji 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 options enable you to opt-in to specific versions of the ISO C++ programming language in a project. Nowy projekt standardowych funkcji 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 kompilator i biblioteki standardowej obsługi dla funkcji, które zostały zmienione lub nowego w wersji aktualizacji pracy roboczą i usterką standardu C++ 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, należy użyć /std:c ++ najnowsze.To enable those features, use /std:c++latest.

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: ulepszono emisji diagnostyki kompilatora przepełnienie buforu, i /GUARD: CF teraz osłony przełącznika instrukcji, które Generowanie spisów przeskoku.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 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ępnych w ramach / await opcji) została usunięta.When using co-routines, the experimental keyword yield (available under the /await option) 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:Visual Studio 2017 version 15.3:

Dodatkowe ulepszenia diagnostyki kompilatora.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:Visual Studio 2017 version 15.5:

Visual C++ runtime wydajności w dalszym ciągu poprawy z powodu lepszą jakość wygenerowanego kodu.Visual C++ runtime performance continues to improve due to better generated code quality. Oznacza to, czy po prostu ponownie skompilować kod, a aplikacja będzie działać szybciej.This means that you can simply recompile your code, and your app runs faster. Niektóre optymalizacje kompilatora są całkowicie nowe, takich jak vectorization warunkowego magazynów skalarne łączenie wywołań sin(x) 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 nowy i szybsze /OPT: ICF implementacji, co może skutkować 9% połączyć speedups czasu, 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- opcji może służyć do powrotu do języka C ++ 14 wersji noexcept podczas w trybie C ++ 17 ogólnie.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 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.

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

Ulepszenia standardowa biblioteka 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)".
  • Zwiększenie wydajności: wprowadzone basic_string::find(char) overloads tylko wywołania 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.
  • Zwiększenie wydajności: basic_string::operator== przed porównaniem ciągi są zawartości sprawdza rozmiar ciągu.Performance improvement: basic_string::operator== now checks the string's size before comparing the strings' contents.
  • Zwiększenie wydajności: usunięty formant sprzężenia w basic_string, które było trudne analizowanie Optymalizator kompilatora.Performance improvement: removed control coupling in basic_string, which was difficult for the compiler optimizer to analyze. Należy pamiętać, że dla wszystkich ciągów krótkich wywoływania reserve nadal ma niezerową koszt nic nie rób.Note that for all short strings, calling reserve still has a nonzero cost to do nothing.
  • Dodaliśmy <żadnych>, <string_view>, apply(), make_from_tuple().We added <any>, <string_view>, apply(), make_from_tuple().
  • std::vector zostały zmienić prawidłowości i wydajności: aliasów podczas wstawiania i umieszczanie poprawnie jest teraz obsługiwany jako wymagane przez standardowe, wyjątek silnej gwarancji jest teraz udostępniany na żądanie przez Standard za pośrednictwem move_if_noexcept() i innych logiki i wstawiania/umieszczanie wykonywać operacje na elementach mniej.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 teraz dereferencji ozdobne wskaźniki o wartości null.The C++ Standard Library now avoids dereferencing null fancy pointers.
  • Dodaje <opcjonalne>, <variant>, 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.
  • Stałe std::promise operator przypisania przenoszenia, która może spowodować wcześniej kod, aby zablokować nieustannego.Fixed the std::promise move assignment operator, which previously could cause code to block forever.
  • Błędy kompilatora przy użyciu stałej atomic<T*> niejawnej konwersji T*.Fixed compiler errors with the atomic<T*> implicit conversion to T*.
  • pointer_traits<Ptr> teraz, prawidłowo wykrywane Ptr::rebind<U>.pointer_traits<Ptr> now correctly detects Ptr::rebind<U>.
  • Stałe braku const kwalifikator w move_iterator operator odejmowania.Fixed a missing const qualifier in the move_iterator subtraction operator.
  • Stałe ciche Generowanie nieprawidłowego kodu dla stanowych allocators zdefiniowane przez użytkownika —, żądanie 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> teraz zaakceptować 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.
  • Nieznacznie poprawia diagnostyki kompilatora dla niepoprawne bind() wywołania.Slightly improved compiler diagnostics for incorrect bind() calls.
  • Zwiększona wydajność std::string i std::wstring przenieść konstruktorów przez 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 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 opcji.The Standard Library now officially tolerates dynamic RTTI being disabled via the /GR- option. Zarówno dynamic_pointer_cast() i rethrow_if_nested() z założenia wymagają dynamic_cast, więc biblioteki standardowej teraz oznacza je jako =delete w obszarze czasie.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ło wyłączone 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 pomocą /D_HAS_STATYCZNYCH_RTTI = 0.The Standard Library now supports disabling this too, via /D_HAS_STATIC_RTTI=0. Należy pamiętać, że to spowoduje wyłączenie std::any, target() i target_type() funkcji Członkowskich std::functioni get_deleter() friend funkcji członkowskiej klasy 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 Visual Studio 2017 wersji 15 ustęp 3Correctness fixes in Visual Studio 2017 version 15.3

  • Standardowa biblioteka kontenery teraz ograniczenie 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 Iteratory z tego kontenera jest można przedstawić w zwracany typ distance().This ensures that the result of distance() on iterators from that container is representable in the return type of distance().
  • Stałe Brak specjalizacji auto_ptr<void>.Fixed missing specialization auto_ptr<void>.
  • for_each_n(), generate_n(), I search_n() algorytmy wcześniej kompilacja nie powiodła się, jeśli długość argumentu nie jest typem całkowitym; teraz podejmować przekonwertować długości niecałkowity 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 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 basic_string działań, które zostały porównanie z npos zamiast max_size() podczas sprawdzania dostępności maksymalny rozmiar overflow.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ę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.
  • future::get() teraz unieważnia future, ponieważ wymaga standardowego.future::get() now invalidates the future, as the standard requires.
  • iterator_traits<void *> używane jako poważny błąd, ponieważ podjęto próbę formularza void&; teraz prawidłowo staje się puste struktury, aby umożliwić korzystanie z 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.
  • Ostrzeżenia zgłoszone przez Clang - wsystem — nagłówki 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 nigdy nie zamierza zgłoszenia wyjątku podczas wykrywania nienależącychpropagate_on_container_swap bez przydzielania równości 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.
  • Biblioteki standardowej teraz będzie wymuszać pasującego alokatora value_type (tryb C ++ 17) z kreskowania ucieczki rezygnacji z.The Standard Library will now enforce matching allocator value_type (in C++17 mode) with an opt-out escape hatch.
  • Stałe niektóre warunki, w przypadku, gdy niezależne-range-insert into basic_string czy szyfrują zawartość ciągów.Fixed some conditions where self-range-insert into basic_string 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 dotyczy programu przydzielania 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 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.
  • Ostrzeżenie C4061 stałej "moduł wyliczający"modułu wyliczającego"w switch wyliczenia"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ł 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 czyszczenie, ale nie jest podejmowana próba można /ścian 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.)
  • Ulepszone std::list debugowania kontroli.Improved std::list debug checks. Lista wyboru teraz Iteratory operator->(), i list::unique() teraz oznacza Iteratory jako unieważnione.List iterators now check operator->(), and list::unique() now marks iterators as invalidated.
  • Stałe metaprogramowania w używa alokatora tuple.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 implementacją na funkcje programu wykorzystujące strukturalnych 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 biblioteki standardowej obiektu wewnętrznego _Deallocate() 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.
  • Zmienione std::try_lock() umożliwia rozwinięcie pakietu zamiast rekursji.Changed std::try_lock() to use pack expansion instead of recursion.
  • Ulepszone std::lock() algorytm unikania zakleszczenie w celu użycia lock() operacje zamiast Obracająca 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 optymalizację nazwanych wartości zwracanej w system_category::message().Enabled the Named Return Value Optimization in system_category::message().
  • conjunction i disjunction teraz utworzyć 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 nie tworzy 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 wbudowane ręcznie std::allocator operacji zmniejszenia rozmiaru kodu w kodzie, który współdziała z std::allocator za pośrednictwem allocator_traits tylko (to znaczy 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 alokatora minimalny interfejs jest teraz obsługiwany przez biblioteki standardowej wywoływania allocator_traits bezpośrednio, zamiast zawijania programu przydzielania 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 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 (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 metaprogramowania, aby uzyskać dostosowane allocator::reference, 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 Wewnętrzny zmniejszania rozmiaru ścieżki dla shrink_to_fit() i reserve() nie jest już w ścieżce ponowne przydzielanie operacji zmniejszenia rozmiaru kodu dla wszystkich członków mutating.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 wzrostu ś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 Mutacja operacji 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.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 operacji teraz konstrukcja przydzielić buforów w żądanym stanie zamiast 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 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 errno adres do usunięcia powtarzane interakcji z protokołem TLS.Operations calling the C standard library in <string> now cache the errno address to remove repeated interaction with TLS.
  • Uproszczone is_pointer implementacji.Simplified the is_pointer implementation.
  • Zakończono zmiana funkcji techniki SFINAE wyrażeń do struct i void_t— na podstawie.Finished changing function-based Expression SFINAE to struct and 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 korzysta z 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 używa teraz nullptr wewnętrznego, zamiast z 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 używa 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(false, "message") do #error message.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 oznacza już nie działa 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 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 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_of
    • any_of
    • for_each
    • for_each_n
    • none_of
    • reduce
    • replace
    • replace_if
    • sort
  • 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:
    • copy
    • copy_n
    • fill
    • fill_n
    • move
    • reverse
    • reverse_copy
    • rotate
    • rotate_copy
    • swap_ranges

Ulepszenia i wydajnościPerformance fixes and improvements

  • basic_string<char16_t> teraz angażujący takie same memcmp, memcpyi podobne optymalizację, które basic_string<wchar_t> angażujący.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 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ść 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 do weryfikacji kolejność danych wejściowych w celu includes, set_difference, set_symmetric_difference, i set_union został zmniejszony przez Odkodowywanie Iteratory przed zaewidencjonowaniem kolejności.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, 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ść 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 jest przekazywany wskaźników do trivially copyable T, teraz wyśle 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 sposób wysłania do memset i memcmp dla std::byte i gsl::byte (i innych wyliczeniach typu char 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 wymagają żadnych zmian.Note that std::copy dispatches using is_trivially_copyable and thus didn't need any changes.
  • Standardowa biblioteka nie zawiera już którego tylko zachowanie było typów innych niż — trivially — które można zniszczyć destruktory puste nawiasy.The Standard Library no longer contains empty-braces destructors whose only behavior was to make types non-trivially-destructible.

Poprawność poprawki w Visual Studio 2017 wersji 15,5 calaCorrectness fixes in Visual Studio 2017 version 15.5

  • std::partition teraz razy predykatu N zamiast N + 1 godziny jako standard jest wymagane.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 wersji 15 ustęp 3 w wersji 15,5 cala.Attempts to avoid magic statics in version 15.3 have been repaired in version 15.5.
  • std::atomic<T> nie wymaga już T jako domyślne 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.
  • __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 w trybie C ++ 17 teraz prawidłowo alokacji uchwytów nadmiernie wyrównane typy, oznacza to, typy którego wyrównanie jest większa niż max_align_t, chyba że zostaną 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 wektory obiektów z wyrównaniem 16 i 32-bajtowych będzie teraz prawidłowo wyrównać instrukcje 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 wersji 15,6Visual Studio 2017 version 15.6

  • <memory_resource ><memory_resource>
  • Biblioteka podstawy V1Library Fundamentals V1
  • Usuwanie przypisania polymorphic_allocatorDeleting polymorphic_allocator assignment
  • Poprawa Wnioskowanie argumentu szablonu klasyImproving class template argument deduction

Visual Studio 2017 wersji 15.7Visual Studio 2017 version 15.7

  • Obsługa równoległe algorytmów nie jest już experiementalsupport for parallel algorithms is no longer experiemental
  • nowe implementacja <filesystem >a new implementation of <filesystem>
  • Konwersje podstawowe ciąg (częściowe)elementary string conversions (partial)
  • STD::launder()std::launder()
  • STD::Bytestd::byte
  • hypot(x,y,z)hypot(x,y,z)
  • unikanie niepotrzebnych zanikaniaavoiding unnecessary decay
  • specjalne funkcje matematycznemathematical special functions
  • constexpr char_traitsconstexpr char_traits
  • wnioskowanie przewodniki dotyczące 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 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 cala:Visual 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. Możesz dodać /Zc:threadSafeInit- w ustawieniach projektu, jeśli wątek wymagane jest bezpieczne inicjowanie off.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 w obszarze Windows Desktop kategorii w nowy projekt okna dialogowego.Win32 projects are now under the Windows Desktop category in the New Project dialog.
  • Konsoli systemu Windows i aplikacji pulpitu szablony teraz tworzyć projekty bez wyświetlania kreatora.The Windows Console and Desktop Application templates now create the projects without displaying a wizard. Jest dostępna nowa kreatora pulpitu systemu Windows w tej samej kategorii, wyświetla te same opcje jako stary aplikacji 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 wersji 15,5 cala:Visual Studio 2017 version 15.5:

Kilka operacji C++, które używają aparatu IntelliSense dla nawigacji refaktoryzacji i kod znacznie szybsze.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

Kliknij z wciśniętym obsługuje teraz C++ 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 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 operacje bazy danych, takie jak przejdź do definicji i Znajdź wszystkie odwołaniaoraz 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 edycji rozwiń zakresy i rozwiń pierwszeństwo również zostały przeniesione z eksperymentalne do zaawansowane.The editor features Expand Scopes and Expand Precedence have also been moved from experimental to advanced.
  • Eksperymentalną refaktoryzacji zmiany sygnatury i wyodrębnić funkcja są teraz dostępne jako domyślne.The experimental refactoring features Change Signature and Extract Function are now available by default.
  • Eksperymentalna funkcji "Projekt szybciej obciążenia" 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 na temat nowych funkcji, zobacz Announcing programu Visual Studio "15".For more information about these new features, see Announcing Visual Studio "15".

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

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

Visual Studio 2017 wprowadza Otwórz Folder funkcji, która umożliwia kodu, kompilowanie i debugowanie 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 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 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 użytkownika 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 zmiennych środowiskowych globalne i specyficzne dla konfiguracji w 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 zdefiniowane w launch.vs.json i zadania w tasks.vs.json konfiguracji debugowania.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 projektów z Otwórz Folder automatycznie konfiguruje ś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.

  • IntelliSense dla C++ 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 wersji 15 ustęp 3: generator Nindżą CMake dodać obsługę.Visual Studio 2017 version 15.3: Support added for the CMake Ninja generator.

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.

Visual Studio 2017 wersji 15.7: dodano CMake 3.11, analizy kodu w projektach CMake obsługę celem widok w Eksploratorze rozwiązań i opcje dla pamięci podręcznej Generowanie i kompilacja 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 CMake obsługi w programie Visual Studio i CMake projekty w programie Visual C++.For more information, see CMake Support in Visual Studio and 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. Instalowanie zalecanych składników (wybrane) narzędzi v141 2017 VC ++ (x86, x64) i zestawu Windows 10 SDK (10.0.nnnnn) zapewnia to będzie działać.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 wersji 15,5 cala:Visual Studio 2017 version 15.5:

Narzędzia kompilacji Visual C++ (wcześniej dostępne jako autonomiczny produkt) są teraz włączone 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 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 Visual Studio 2017 wersji 15,5 cala.The v141 toolset contains the lastest improvements in Visual Studio 2017 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:Visual Studio 2017 version 15.2:

Wprowadzono ulepszenia w wizualizacji udostępniania i typ kodu i platform.Improvements have been made in 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:

  • Obciążenie systemu Linux została dodana obsługa rsync zamiast 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 elementów docelowych mikrokontrolerów ARM kompilacji.Support is added for cross compilation targeting ARM microcontrollers. Aby włączyć tę opcję w instalacji, wybierz Linux Programowanie w języku C++ obciążenia i wybierz opcję osadzone 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.
  • 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.
  • 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. Aby uzyskać więcej informacji, zobacz Konfigurowanie projektu CMake Linux.For more information, see Configure a Linux CMake Project.

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

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: infrastruktury pulpitu Mostek służy do pakietu z istniejącej aplikacji pulpitu lub obiektu COM dla wdrożenia przy użyciu systemu Windows Magazyn lub za pomocą 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 aplikacji pulpitu 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 Mostek pulpitu.For more information, see Desktop Bridge.

Visual Studio 2017, wersja 15.5Visual Studio 2017 version 15.5
A projekt do tworzenia pakietów aplikacji systemu Windows zostanie dodany szablon projektu, który jest znacznie ułatwione pracy pakietu aplikacji klasycznych przy użyciu mostka pulpitu.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 | Nowy | Projekt | Zainstalowane | Visual C++ | Platforma uniwersalna systemu Windows.It is available under File | New | Project | Installed | Visual C++ | Universal Windows Platform. Aby uzyskać więcej informacji, zobacz pakietu dla aplikacji za pomocą programu Visual Studio (mostek pulpitu).For more information, see Package an app by using Visual Studio (Desktop Bridge).

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 /bigobj przełącznika, 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 programy w rozszerzenia analizy kodu stronę na stronach właściwości projektu i rozszerzenia zostanie uwzględniony 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 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 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 wersji 15,6:Visual Studio 2017 version 15.6:
Dodano pojedynczego pliku analizy i poprawy wydajności w czasie wykonywania analizy obsługę.Support added for single-file analysis, and improvements in analysis run-time performance. Aby uzyskać więcej informacji, zobacz ulepszenia statycznej analizy C++ dla programu Visual Studio 2017 15,6 Preview 2For more information, see C++ Static Analysis Improvements for Visual Studio 2017 15.6 Preview 2

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

Testowanie jednostekUnit testing

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

Adapter testowy Google i karty Boost.Test są teraz dostępne jako składniki projektowania aplikacji w języku C++ obciążenia i są zintegrowane z Eksploratora 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 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++.

Visual Studio 2017 wersji 15,6:Visual Studio 2017 version 15.6:

  • Dodano obsługę bibliotekę dynamiczną Boost.Test obsługę.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 testów jednostkowych Boost.Test: obsługa dynamicznej biblioteki i nowy szablon elementu.For more information, see Boost.Test Unit Testing: Dynamic Library support and New Item Template.

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

CodeLens obsługiwane dodawane do projektów testów jednostkowych C++.CodeLens supported added for C++ unit test projects. Aby uzyskać więcej informacji, zobacz CodeLens o do testowania jednostki C++.For more information, see Announcing CodeLens for C++ Unit Testing.

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

    Spowoduje to wyświetlenie nowa historii zasobów okna narzędzia, 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 w obszarze diagnostyki grafiki), 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 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 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 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ć, 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 analizatora grafiki programu Visual Studio.This window is available via View > Memory Statistics in Visual Studio Graphics Analyzer. Dane można kopiować do pliku CSV do wyświetlenia w arkuszu kalkulacyjnym 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

  • 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