Visual Studio 2017'deki C++ yenilikleri
Visual Studio 2017, C++ ortamına birçok güncelleştirme ve düzeltme getirir. Derleyici ve araçlarda 250'den fazla hatayı düzeltip sorunları bildirdik. Birçoğu, Geri Bildirim Gönder altındaki Sorun Bildir ve Öneri Sağla seçenekleri aracılığıyla müşteriler tarafından gönderildi. Hataları bildirdiğiniz için teşekkür ederiz!
Tüm Visual Studio'daki yenilikler hakkında daha fazla bilgi için bkz . Visual Studio 2017'deki yenilikler. Visual Studio 2019'da C++ ile ilgili yenilikler hakkında bilgi için bkz . Visual Studio 2019'da C++ için yenilikler. Visual Studio 2015 ve önceki sürümlerde C++ ile ilgili yenilikler hakkında bilgi için bkz . Visual C++ Yenilikler 2003 ile 2015 arasında. C++ belgelerindeki yenilikler hakkında bilgi için bkz . Microsoft C++ belgeleri: Yenilikler.
Visual Studio 2017 C++ derleyicisi
C++ uyumluluğu geliştirmeleri
Bu sürümdeki C++ derleyicisini ve standart kitaplığını C++11 ve C++14 özellikleri için gelişmiş destekle güncelleştirdik. Ayrıca, C++17 standardında olması beklenen belirli özellikler için ön desteği de içerir. Ayrıntılı bilgi için bkz . Visual Studio 2017'de C++ Uyumluluk Geliştirmeleri.
Visual Studio 2017 sürüm 15.5
Derleyici yapılandırılmış bağlamalar, lambdalarif constexpr
, , satır içi değişkenler, constexpr
katlama ifadeleri ve tür sistemine ekleme noexcept
dahil olmak üzere C++17'de yeni olan özelliklerin yaklaşık %75'ini destekler. Bu özellikler seçeneği altında /std:c++17
kullanılabilir. Daha fazla bilgi için bkz . Visual Studio 2017'de C++ Uyumluluk Geliştirmeleri
Visual Studio 2017 sürüm 15.7 Sürüm Notları
Visual Studio sürüm 15.7'deki MSVC derleyici araç takımı artık C++ Standard ile uyumludur. Daha fazla bilgi için bkz . Duyuru: MSVC C++ Standardına ve Microsoft C/C++ dili uyumluluğuna uygundur.
Visual Studio 2017 sürüm 15.8
Derleyici /experimental:preprocessor
anahtarı, sonunda tüm geçerli C ve C++ standartlarına uygun olacak yeni deneysel MSVC ön işlemcisini etkinleştirir. Daha fazla bilgi için bkz . MSVC yeni ön işlemciye genel bakış.
Yeni derleyici seçenekleri
/permissive-
: Tüm katı standartlar uyumluluk derleyicisi seçeneklerini etkinleştirin ve Microsoft'a özgü derleyici uzantılarının çoğunu devre dışı bırakın (örneğin, değil__declspec(dllimport)
). Visual Studio 2017 sürüm 15.5'te bu seçenek varsayılan olarak açıktır./permissive-
Uyumluluk modu, iki aşamalı ad arama desteği içerir. Daha fazla bilgi için bkz . Visual Studio'da C++ Uyumluluk Geliştirmeleri./diagnostics
: Tanılama hatasının veya uyarı konumunun üç farklı şekilde görüntülenmesini sağlar: yalnızca satır numarası, satır numarası ve sütunu ya da sorunlu kod satırının altında bir şapka işareti olan satır numarası ve sütun./debug:fastlink
: Tüm hata ayıklama bilgilerini PDB dosyasına kopyalamayarak %30'a kadar daha hızlı artımlı bağlantı sürelerini (Visual Studio 2015'e karşı) etkinleştirin. PDB dosyası bunun yerine yürütülebilir dosyayı oluşturmak için kullanılan nesne ve kitaplık dosyalarının hata ayıklama bilgilerini gösterir. Visual Studio'da C++ derlemelerini hızlandırmak için bkz. VS "15" ile/Debug:fastlink
daha hızlı C++ derleme döngüsü ve Öneriler.Visual Studio 2017 ile
/await
kullanılmasına/sdl
izin verir. Coroutines ile ilgili/RTC
sınırlamayı kaldırdık.
Visual Studio 2017 sürüm 15.3
/std:c++14
ve/std:c++latest
: Bu derleyici seçenekleri, bir projede ISO C++ programlama dilinin belirli sürümlerini kabul etmenizi sağlar. Yeni taslak standart özelliklerinin çoğu seçenek tarafından/std:c++latest
korunur./std:c++17
derleyicisi tarafından uygulanan C++17 özellikleri kümesini etkinleştirir. Bu seçenek, C++17'den sonraki özellikler için derleyici ve standart kitaplık desteğini devre dışı bırakır: Çalışma Taslağı'nın sonraki sürümlerinde değiştirilen veya yeni olan ve C++ Standardının hata güncelleştirmeleri. Bu özellikleri etkinleştirmek için kullanın/std:c++latest
.
Codegen, güvenlik, tanılama ve sürüm oluşturma
Bu sürüm iyileştirme, kod oluşturma, araç takımı sürüm oluşturma ve tanılamada çeşitli iyileştirmeler getirir. Bazı önemli geliştirmeler şunlardır:
- Döngüler için geliştirilmiş kod oluşturma: sabit tam sayıları bölme işlemleri için otomatik vektörleştirme desteği, memset desenlerinin daha iyi tanınması.
- Geliştirilmiş kod güvenliği: Arabellek taşması derleyici tanılamalarının emisyonu iyileştirildi ve
/guard:cf
şimdi atlama tabloları oluşturan switch deyimlerini korur. - Sürüm oluşturma: Yerleşik ön işlemci makro _MSC_VER değeri artık her Visual C++ araç takımı güncelleştirmesinde monoton olarak güncelleştiriliyor. Daha fazla bilgi için bkz . Visual C++ Derleyici Sürümü.
- Yeni araç takımı düzeni: Derleyici ve ilgili derleme araçlarının geliştirme makinenizde yeni bir konumu ve dizin yapısı vardır. Yeni düzen, derleyicinin birden çok sürümünün yan yana yüklemelerini etkinleştirir. Daha fazla bilgi için bkz . Visual Studio 2017'de Derleyici Araçları Düzeni.
- Geliştirilmiş tanılama: Çıkış penceresi artık hatanın oluştuğu sütunu gösterir. Daha fazla bilgi için bkz . VS "15" Önizleme 5'te C++ derleyici tanılama geliştirmeleri.
- Coroutines kullanılırken deneysel anahtar sözcük verimi (seçenek kapsamında
/await
kullanılabilir) kaldırıldı. Bunun yerine kodunuz kullanılacakco_yield
şekilde güncelleştirilmelidir. Daha fazla bilgi için bkzyield
. VS 2017'de olmakco_yield
için anahtar sözcük.
Visual Studio 2017 sürüm 15.3
Derleyicideki tanılamalarda yapılan geliştirmeler. Daha fazla bilgi için bkz . Visual Studio 2017 15.3.0'da Tanılama Geliştirmeleri.
Visual Studio 2017 sürüm 15.5
Visual C++ çalışma zamanı performansı, daha iyi oluşturulan kod kalitesiyle geliştirmeye devam eder. Artık kodunuzu yeniden derleyebilirsiniz ve uygulamanız daha hızlı çalışır. Bazı derleyici iyileştirmeleri, koşullu skaler depoların vektörleştirilmesi, çağrıların sin(x)
ve yeni sincos(x)
bir içine birleştirilmesi ve cos(x)
SSA iyileştiricisinden yedekli yönergelerin ortadan kaldırılması gibi yepyenidir. Diğer derleyici iyileştirmeleri, koşullu ifadeler için vektörleştirici buluşsal yöntemleri, daha iyi döngü iyileştirmeleri ve float min/max codegen gibi mevcut işlevlere yönelik iyileştirmelerdir. Bağlayıcının yeni ve daha hızlı /OPT:ICF
bir uygulaması vardır ve bu da %9'a kadar bağlantı süresi hızlandırmalarına neden olabilir ve artımlı bağlamada başka performans düzeltmeleri de vardır. Daha fazla bilgi için bkz . /OPT (İyileştirmeler) ve /INCREMENTAL (Artımlı Bağlantı).
Microsoft C++ derleyicisi Intel'in AVX-512'sini destekler. AVX-512 ile 128 bit ve 256 bit genişliğinde yazmaçlarda yeni işlevler getiren Vektör Uzunluğu yönergelerine sahiptir.
Bu /Zc:noexceptTypes-
seçenek, genel olarak C++17 modu kullanılırken C++14 sürümüne noexcept
geri dönmek için kullanılabilir. Bu seçenek, tüm kodunuzu aynı anda yeniden yazmak zorunda kalmadan kaynak kodunuzu C++17'ye uyacak şekilde güncelleştirmenizi throw()
sağlar. Daha fazla bilgi için bkz . Dinamik özel durum belirtimi kaldırma ve noexcept.
Visual Studio 2017 sürüm 15.7 Sürüm Notları
- Kurgusal yürütme yan kanal saldırılarına karşı azaltmaya yardımcı olmak için yeni derleyici anahtarı /Qspectre . Daha fazla bilgi için bkz . MSVC'de spectre risk azaltmaları.
- Spectre azaltma için yeni tanılama uyarısı. Daha fazla bilgi için bkz . Visual Studio 2017 Sürüm 15.7 Önizleme 4'te Spectre tanılaması.
- /Zc, için yeni bir değer,
/Zc:__cplusplus
C++ standart desteğinin doğru raporlamasını sağlar. Örneğin, anahtar ayarlandığında ve derleyici modda/std:c++17
olduğunda değer olarak201703L
genişletilir. Daha fazla bilgi için bkz. MSVC şimdi __cplusplus doğru şekilde bildiriyor.
C++ standart kütüphanesi
Doğruluk Geliştirmeleri
Visual Studio 2017 RTM (sürüm 15.0)
- Küçük
basic_string
_ITERATOR_DEBUG_LEVEL != 0
tanılama geliştirmeleri. Bir IDL denetimi dize makinelerinde sabitlendiğinde, artık seyahate neden olan davranışı bildirir. Örneğin, "dize yineleyicisi başvurulamıyor" yerine "aralık dışında olduğundan dize yineleyicisi başvurulamıyor (örneğin, bir son yineleyici)" alırsınız. - Daha önce kodun
std::promise
sonsuza kadar engellenmesine neden olabilen taşıma atama işleci düzeltildi. - için örtük dönüştürme
T*
ileatomic<T*>
derleyici hataları düzeltildi. pointer_traits<Ptr>
şimdi doğru algılarPtr::rebind<U>
.- Çıkarma işlecinde
move_iterator
eksikconst
bir niteleyici düzeltildi. - ve
propagate_on_container_move_assignment
isteyenpropagate_on_container_copy_assignment
durum bilgisi olan kullanıcı tanımlı ayırıcılar için sessiz hatalı kod oluşturma düzeltildi. atomic<T>
şimdi aşırı yüklenmiş olarak tolere ederoperator&()
.- Yanlış
bind()
çağrılar için biraz geliştirilmiş derleyici tanılaması.
Visual Studio 2017 RTM'de daha fazla standart kitaplık geliştirmesi vardır. Tam liste için bkz. VS 2017 RTM'de C++ Ekip Blogu girdisi Standart Kitaplık Düzeltmeleri.
Visual Studio 2017 sürüm 15.3
- Standart kitaplık kapsayıcıları artık yerine öğesini olarak sıkıştırır
max_size()
max()
numeric_limits<difference_type>::max()
size_type
. Bu değişiklik, kapsayıcıdaki yineleyicilerin sonucunundistance()
dönüş türündedistance()
gösterilebilir olmasını sağlar. - Eksik özelleştirme
auto_ptr<void>
düzeltildi. for_each_n()
Uzunluk bağımsız değişkeni tam sayı türünde değilse, daha önce ,generate_n()
vesearch_n()
algoritmaları derlenemiyordu. Artık nonintegral uzunluklarını yineleyicilerin öğesine dönüştürmeye çalışırlardifference_type
.normal_distribution<float>
artık standart kitaplığın içinde çiftten float'a daraltmayla ilgili uyarılar yaymaz.- Boyut taşması üst sınırı denetimi yerine
max_size()
kullanılannpos
bazıbasic_string
işlemler düzeltildi. condition_variable::wait_for(lock, relative_time, predicate)
sahte bir uyanışın olması durumunda göreli sürenin tamamını beklerdi. Şimdi göreli sürenin yalnızca tek bir aralığını bekler.future::get()
şimdi standardınfuture
gerektirdiği gibi öğesini geçersiz kılar.iterator_traits<void *>
oluşturmaya çalıştığındanvoid&
, artık "yineleyici mi" SFINAE koşullarında kullanımınaiterator_traits
izin vermek için temiz bir şekilde boş bir yapıya dönüşür.- Clang
-Wsystem-headers
tarafından bildirilen bazı uyarılar düzeltildi. - Ayrıca Clang
-Wmicrosoft-exception-spec
tarafından bildirilen "bildirimdeki özel durum belirtimi önceki bildirimle eşleşmiyor" düzeltildi. - Ayrıca Clang ve C1XX tarafından bildirilen mem-initializer-list sıralama uyarıları düzeltildi.
- Sıralanmamış kapsayıcılar, kapsayıcıların kendileri değiştirildiğinde karma işlevlerini veya koşullarını değiştirmedi. Şimdi yapıyorlar.
- Birçok kapsayıcı değiştirme işlemi artık işaretlenir
noexcept
(standart kitaplığımız hiçbir zaman eşit olmayanpropagate_on_container_swap
ayırıcı olmayan tanımlanmamış davranış koşulunu algılarken bir özel durum oluşturma niyetinde değildir). - Birçok
vector<bool>
işlem artık olarak işaretlenirnoexcept
. - Standart kitaplık artık geri çevirme kaçış taramasıyla eşleşen ayırıcıyı
value_type
(C++17 modunda) zorlar. - içine kendi kendine aralık eklemenin
basic_string
dizelerin içeriğini karıştırdığı bazı koşullar düzeltildi. (Not: Vektörlere kendi kendine aralık ekleme hala Standart tarafından yasaklanmıştır.) basic_string::shrink_to_fit()
artık ayırıcının tarafından etkilenmezpropagate_on_container_swap
.std::decay
şimdi, cv-qualified, ref-qualified veya her ikisi de olan ayrıntılı işlev türlerini, yani işlev türlerini işler.- Uygun büyük/küçük harf duyarlılığı ve eğik çizgi kullanacak şekilde değiştirilen yönergeler taşınabilirliği artırır.
- C4061 "'numaralandırma' sabit listesi anahtarındaki 'numaralandırıcı' numaralandırıcısı bir servis talebi etiketi tarafından açıkça işlenmiyor" uyarısı düzeltildi. Bu uyarı varsayılan olarak kapalıdır ve standart kitaplığın uyarılar için genel ilkesinde özel durum olarak düzeltildi. (Standart kitaplık temizdir
/W4
, ancak temiz olmaya/Wall
çalışmaz. Varsayılan olmayan uyarıların çoğu olağan dışı bir şekilde gürültülü olur ve düzenli olarak kullanılması amaçlanmamıştır.) - Geliştirilmiş
std::list
hata ayıklama denetimleri. Liste yineleyicileri şimdi öğesini denetleroperator->()
velist::unique()
şimdi yineleyicileri geçersiz olarak işaretler. - içindeki
tuple
uses-allocator meta programlaması düzeltildi.
Visual Studio 2017 sürüm 15.5
std::partition
şimdi standart gerektirdiği gibi koşul süreleriniN + 1
zaman yerine çağırırN
.- Sürüm 15.3'teki sihirli statikleri önleme girişimleri sürüm 15.5'te onarılır.
std::atomic<T>
artık varsayılan olarak oluşturulabilir olmasını gerektirmezT
.- Yineleyici hata ayıklama etkinleştirildiğinde logaritmik süreye sahip yığın algoritmaları farklı davranır. Artık girişin aslında bir yığın olduğunu belirten doğrusal bir zaman onayı yapmazlar.
__declspec(allocator)
artık Clang'den gelen ve bu declspec'i anlamayan uyarıları önlemek için yalnızca C1XX için korunuyor.basic_string::npos
artık derleme zamanı sabiti olarak kullanılabilir.std::allocator
C++17 modunda artık, tarafından devre dışı bırakılmadığı/Zc:alignedNew-
sürece, hizalaması değerindenmax_align_t
büyük olan fazla hizalanmış türlerin ayırmasını düzgün bir şekilde işler. Örneğin, 16 bayt veya 32 bayt hizalamalı nesne vektörleri artık SSE ve AVX yönergeleri için düzgün hizalanır.
Uyumluluk geliştirmeleri
- Herhangi bir>, <string_view>,
apply()
,make_from_tuple()
ekledik<. - İsteğe bağlı>, <değişken>,
shared_ptr::weak_type
ve <cstdalign> eklendi<. - , ,
max(initializer_list)
veminmax(initializer_list)
minmax_element()
min_element()
max_element()
içindemin(initializer_list)
C++14constexpr
etkinleştirildi.
Daha fazla bilgi için bkz . Microsoft C/C++ dil uyumluluğu.
Visual Studio 2017 sürüm 15.3
- Diğer birkaç C++17 özelliği uygulanmıştır. Daha fazla bilgi için bkz . Microsoft C++ dil uyumluluğu tablosu.
- "Değişken ve isteğe bağlı kopyalama/taşıma önemsizliğini yaymalıdır" P0602R0 uygulandı.
- Standart kitaplık artık /GR- seçeneği aracılığıyla dinamik RTTI'nin devre dışı bırakılmasına resmi olarak tolerans gösterir.
rethrow_if_nested()
Hem hem dedynamic_pointer_cast()
doğası gereği,dynamic_cast
standart kitaplık bunları altında/GR-
olarak=delete
işaretler. - Dinamik RTTI aracılığıyla devre dışı bırakıldığında
/GR-
bile biçimindeki "statik RTTI"typeid(SomeType)
hala kullanılabilir ve birkaç standart kitaplık bileşenine güç sağlar. Standart kitaplık artık aracılığıyla/D_HAS_STATIC_RTTI=0
bu özelliği devre dışı bırakmayı da destekliyor. Bu bayrak, ve öğesinintarget()
vetarget_type()
üye işlevlerini veget_deleter()
ve 'ninstd::weak_ptr
std::function
std::shared_ptr
arkadaş üye işlevini de devre dışı bırakırstd::any
. - Standart kitaplık artık koşullu olarak tanımlanmış makrolar yerine koşulsuz olarak C++14
constexpr
kullanıyor. - Standart kitaplık artık dahili olarak diğer ad şablonlarını kullanıyor.
- Standart kitaplık artık yerine şirket içinde
nullptr_t{}
kullanırnullptr
. (NULL'nin iç kullanımı yok edildi. Null olarak 0 iç kullanımı aşamalı olarak temizleniyor.) - Standart kitaplık artık stilsel olarak yanlış kullanım
std::forward()
yerine dahili olarak kullanırstd::move()
. - olarak
#error message
değiştirildistatic_assert(false, "message")
. Derlemeyi hemen durdurduğundan#error
bu değişiklik derleyici tanılamalarını geliştirir. - Standart kitaplık artık işlevlerini olarak
__declspec(dllimport)
işaretlemez. Modern bağlayıcı teknolojisi artık buna ihtiyaç duymaz. - Varsayılan şablon bağımsız değişkenlerine ayıklanan SFINAE, dönüş türlerine ve işlev bağımsız değişken türlerine kıyasla dağınıklığı azaltıyor.
- Rastgele> hata ayıklama denetimleri <artık olarak adlandırılan
fputs()
iç işlevi_Rng_abort()
yerine standart kitaplığın olağan makinelerinistderr
kullanır. Bu işlevin uygulaması ikili uyumluluk için tutulur. Standart kitaplığın sonraki ikili uyumsuz sürümünde kaldıracağız.
Visual Studio 2017 sürüm 15.5
- C++17 standardına göre çeşitli standart kitaplık özellikleri eklendi, kullanım dışı bırakıldı veya kaldırıldı. Daha fazla bilgi için bkz . Visual Studio'da C++ uyumluluk geliştirmeleri.
- Aşağıdaki paralel algoritmalar için deneysel destek:
all_of
any_of
for_each
for_each_n
none_of
reduce
replace
replace_if
sort
- Aşağıdaki paralel algoritmalar için imzalar eklenir ancak şu anda paralelleştirilmemiştir. Profil oluşturma, yalnızca öğeleri hareket ettiren veya çalıştıran algoritmaları paralelleştirmenin hiçbir faydasını göstermedi:
copy
copy_n
fill
fill_n
move
reverse
reverse_copy
rotate
rotate_copy
swap_ranges
Visual Studio 2017 sürüm 15.6
<memory_resource>
- KitaplıkLa İlgili Temel Bilgiler V1
- Atama siliniyor
polymorphic_allocator
- Sınıf şablonu bağımsız değişken kesintisini iyileştirme
Visual Studio 2017 sürüm 15.7 Sürüm Notları
- Paralel algoritma desteği artık deneysel değildir
- Yeni bir uygulama:
<filesystem>
- Temel dize dönüştürmeleri (kısmi)
std::launder()
std::byte
hypot(x,y,z)
- Gereksiz çürümeyi önleme
- Matematiksel özel işlevler
constexpr char_traits
- Standart kitaplık için kesinti kılavuzları
Daha fazla bilgi için bkz . Microsoft C/C++ dil uyumluluğu.
Performans ve aktarım hızı düzeltmeleri
- Aşırı
basic_string::find(char)
yüklemeler yalnızca bir kez çağrılırtraits::find
. Daha önce, 1 uzunluğunda bir dize için genel bir dize araması olarak uygulanıyordu. basic_string::operator==
şimdi dizelerin içeriğini karşılaştırmadan önce dizenin boyutunu denetler.- derleyici iyileştiricisinin çözümlemesi zor olan içindeki
basic_string
denetim eşleştirmesi kaldırıldı. Tüm kısa dizeler için çağrınınreserve
sıfırdan farklı bir maliyeti yoktur. std::vector
doğruluk ve performans için elden geçirildi: Ekleme ve yerleştirme işlemleri sırasında diğer ad ekleme artık Standart'ın gerektirdiği şekilde doğru şekilde işleniyor, ve diğer mantık aracılığıylamove_if_noexcept()
Standart tarafından gerektiğinde güçlü özel durum garantisi sağlanıyor ve ekleme ve yerleştirme işlemi daha az öğe işlemi gerçekleştiriyor.- C++ standart kitaplığı artık null süslü işaretçilerin başvurularını kaldırmayı önlüyor.
- Geliştirilmiş
weak_ptr::lock()
performans. - Derleyici aktarım hızını artırmak için C++ standart kitaplık üst bilgileri artık gereksiz derleyici iç bilgilerine yönelik bildirimler eklemekten kaçınır.
- Oluşturucuların
std::string
performansını üçtenstd::wstring
fazla artırıp taşıma.
Visual Studio 2017 sürüm 15.3
- ile
noexcept
etkileşimler üzerinde çalışıldı ve bu da uygulamanın Yapılandırılmış Özel Durum İşleme (SEH) kullanan işlevlere dahil edilmesinistd::atomic
engelledi. - Standart kitaplığın iç
_Deallocate()
işlevi daha küçük kodlara göre iyileştirilerek daha fazla yerde çizilmesine olanak tanındı. - Özyineleme yerine paket genişletmesi kullanılacak şekilde değiştirildi
std::try_lock()
. std::lock()
Kilitlenme önleme algoritması, tüm kilitlerde döndürmektry_lock()
yerine işlemleri kullanacaklock()
şekilde iyileştirildi.- içinde Adlandırılmış Dönüş Değeri İyileştirmesi etkinleştirildi
system_category::message()
. conjunction
vedisjunction
şimdi türler yerine türlerinN + 1
örneğini2N + 2
oluşturur.std::function
artık her tür silme çağrılabilen için ayırıcı destek makineleri örneği oluşturmaz, aktarım hızını artırır ve birçok farklı lambdayı 'astd::function
geçiren programlarda .obj boyutunu azaltır.allocator_traits<std::allocator>
yalnızca (çoğu kodda) aracılığıylaallocator_traits
etkileşim kuran koddaki kod boyutunu azaltarak el ilestd::allocator
satırstd::allocator
içi işlemler içerir.- C++11 en düşük ayırıcı arabirimi artık ayırıcıyı bir iç sınıfta
_Wrap_alloc
sarmalamak yerine doğrudan standart kitaplık çağrısıallocator_traits
tarafından işlenir. Bu değişiklik ayırıcı desteği için oluşturulan kod boyutunu azaltır, iyileştiricinin bazı durumlarda standart kitaplık kapsayıcıları hakkında düşünme becerisini artırır ve daha iyi bir hata ayıklama deneyimi sağlar (artık hata ayıklayıcı yerine_Wrap_alloc<your_allocator_type>
ayırıcı türünüzü görürsünüz). - Ayırıcıların özelleştirmesine izin verilmeyen özelleştirilmiş
allocator::reference
için meta programlama kaldırıldı. (Ayırıcılar kapsayıcıların süslü işaretçiler kullanmasını sağlayabilir, ancak süslü başvurular kullanamaz.) - Derleyici ön ucuna döngüler için aralık tabanlı yineleyicilerin hatalarını ayıklamayı kaldırması öğretildi ve hata ayıklama derlemelerinin performansı artırıldı.
basic_string
vereserve()
içinshrink_to_fit()
iç küçültme yolu artık işlemleri yeniden ayırma yolunda olmadığından, tüm sessize alan üyelerin kod boyutunu küçültür.- İç
basic_string
büyüme yolu artık yolundashrink_to_fit()
değildir. - Mutating
basic_string
işlemleri artık ayrılmayan hızlı yol ve yavaş yol işlevleri ayırarak ortak yeniden ayrılmama olayının çağıranlara satır içi olarak eklenmesini daha olası hale getirerek hesaba katılmış olur. - Sessize
basic_string
alma işlemleri artık yeniden boyutlandırma yerine tercih edilen durumda yeniden ayrılmış arabellekler oluşturur. Örneğin, dizenin başındaki bir ekleme artık eklemeden sonra içeriği tam olarak bir kez taşır. Aşağı veya yeni ayrılan arabelleğe taşınır. Artık yeniden ayırma durumunda ilk önce yeni ayrılan arabelleğe ve ardından aşağı doğru iki kez taşınmaz. - Dizede <> C standart kitaplığını çağıran işlemler artık TLS ile yinelenen etkileşimi kaldırmak için adresi önbelleğe alır
errno
. - Uygulamayı basitleştirdi
is_pointer
. - İşlev tabanlı İfade SFINAE'sini ve
void_t
tabanlı olarakstruct
değiştirme işlemi tamamlandı. - Standart kitaplık algoritmaları artık soncrementing yineleyicilerinden kaçınıyor.
- 64 bit sistemlerde 32 bit ayırıcılar kullanılırken kesme uyarıları düzeltildi.
std::vector
taşıma ataması, mümkün olduğunda arabelleği yeniden kullanarak POCMA olmayan eşit ayırıcı olmayan durumda artık daha verimlidir.
Visual Studio 2017 sürüm 15.5
basic_string<char16_t>
artık aynımemcmp
,memcpy
ve benzer iyileştirmeleribasic_string<wchar_t>
devreye alır.- Visual Studio 2015 Güncelleştirme 3'teki "işlevleri kopyalamaktan kaçınma" çalışmamızın kullanıma sunduğu işlev işaretçilerinin çizili olmasını engelleyen bir iyileştirici sınırlaması
lower_bound(iter, iter, function pointer)
üzerinde çalışıldı ve performansı geri yüklendi. - Yineleyici hata ayıklamasının ,
set_difference
,set_symmetric_difference
veset_union
girişleriniincludes
sıralama doğrulamasının yükü, sırayı denetlemeden önce yineleyicilerin işaretini kaldırarak azaltıldı. std::inplace_merge
şimdi zaten konumda olan öğeleri atlar.std::random_device
Oluşturma artık oluşturmaz ve sonra birstd::string
yok eder.std::equal
vestd::partition
yineleyici karşılaştırmasını kaydeden bir atlama iş parçacığı iyileştirme geçişi vardı.- İşaretçiler önemsiz olarak kopyalanabilir
T
olarak geçirildiğindestd::reverse
, artık el yazısı vektörleştirilmiş bir uygulamaya gönderilir. std::fill
,std::equal
vestd::lexicographical_compare
ve içinstd::byte
vememcmp
(vegsl::byte
diğer char benzeri sabit listeleri ve sabit listesi sınıfları) için nasıl dağıtıldığımemset
öğretildi.std::copy
kullanılarakis_trivially_copyable
gönderimler olduğundan herhangi bir değişikliğe gerek yoktu.- Standart kitaplık artık, türleri önemsiz olarak yok edilemez hale getirmek için tek davranışı olan boş ayraç yıkıcıları içermiyor.
Diğer kitaplıklar
Açık kaynak kitaplık desteği
Vcpkg , Visual Studio'da açık kaynak C++ statik kitaplıkları ve DLL'leri alma ve oluşturma işlemini büyük ölçüde kolaylaştıran bir açık kaynak komut satırı aracıdır. Daha fazla bilgi için bkz . vcpkg.
CPPRest SDK 2.9.0
Visual Studio 2017 sürüm 15.5
C++ için platformlar arası bir web API'si olan CPPRestSDK, 2.9.0 sürümüne güncelleştirildi. Daha fazla bilgi için bkz . CppRestSDK 2.9.0 GitHub'da kullanılabilir.
ATL
Visual Studio 2017 sürüm 15.5
- Yine de başka bir ad arama uyumluluğu düzeltmeleri kümesi
- Mevcut taşıma oluşturucuları ve taşıma ataması işleçleri artık düzgün bir şekilde kaldırılmayan olarak işaretleniyor
- atlstr.h'de yerel statiklerin iş parçacığı güvenli başlatması hakkında geçerli uyarı C4640'ı kaldırma
- DLL oluşturmak için ATL kullanılırken XP araç takımında yerel statiklerin iş parçacığı güvenli başlatması otomatik olarak kapatıldı. Şimdi değil. İş parçacığı güvenli başlatma istemiyorsanız Proje ayarlarınıza ekleyebilirsiniz
/Zc:threadSafeInit-
.
Visual C++ çalışma zamanı
- Control Flow Guard sembolleri için yeni üst bilgi "cfguard.h".
Visual Studio 2017 C++ IDE
- Yapılandırma değiştirme performansı, C++ yerel projeleri için daha iyi, C++/CLI projeleri için ise çok daha iyi bir duruma geldi. Bir çözüm yapılandırması ilk kez etkinleştirildiğinde daha hızlıdır ve bu çözüm yapılandırmasının sonraki tüm etkinleştirmeleri neredeyse anında gerçekleştirilir.
Visual Studio 2017 sürüm 15.3
- Çeşitli proje ve kod sihirbazları, imza iletişim kutusu stilinde yeniden yazıldı.
- Sınıf Ekle artık doğrudan Sınıf Ekle sihirbazını başlatır. Daha önce burada bulunan diğer tüm öğeler artık Yeni Öğe Ekle > altında kullanılabilir.
- Win32 projeleri artık Yeni Proje iletişim kutusundaki Windows Masaüstü kategorisinin altındadır.
- Windows Konsolu ve Masaüstü Uygulaması şablonları artık sihirbaz görüntülemeden projeleri oluşturur. Aynı kategorinin altında eski Win32 Konsol Uygulaması sihirbazıyla aynı seçenekleri görüntüleyen yeni bir Windows Masaüstü Sihirbazı vardır.
Visual Studio 2017 sürüm 15.5
Yeniden düzenleme ve kod gezintisi için IntelliSense altyapısını kullanan birkaç C++ işlemi çok daha hızlı çalışır. Aşağıdaki sayılar, 3500 proje içeren Visual Studio Chromium çözümünü temel alır:
Özellik | Performans İyileştirme |
---|---|
Yeniden Adlandır | 5,3x |
İmzayı Değiştir | 4,5x |
Tüm Başvuruları Bul | 4,7x |
C++ artık Ctrl+Tıklama Tanıma Git'i desteklemektedir ve bu da tanımlara fareyle gezinmeyi kolaylaştırır. Productivity Power Tools paketindeki Yapı Görselleştiricisi artık varsayılan olarak ürüne de dahildir.
IntelliSense
Yeni SQLite tabanlı veritabanı altyapısı artık varsayılan olarak kullanılıyor. Yeni altyapı Tanıma Git ve Tüm Başvuruları Bul gibi veritabanı işlemlerini hızlandırır. İlk çözüm ayrıştırma süresini önemli ölçüde artırır. Ayar, Araçlar > Seçenekler Metin Düzenleyicisi > C/C++ > Gelişmiş'e> taşındı. (Daha önce ... C/C++ > Deneysel.)
Önceden derlenmiş üst bilgileri kullanmayan projelerde ve dosyalarda IntelliSense performansını geliştirdik. Geçerli dosyadaki üst bilgiler için Otomatik Önceden Derlenmiş Üst Bilgi oluşturuldu.
Hata listesindeki IntelliSense hataları için hata filtreleme ve yardım özelliği ekledik. Şimdi hata sütununa tıklandığında filtreleme sağlanıyor. Ayrıca, belirli hatalara tıklandığında veya F1 tuşuna basıldığında, hata iletisi için çevrimiçi bir arama başlatılır.
Üye Listesi öğelerini türe göre filtreleme özelliği eklendi.
Üye Listesinde görünenlere bağlamsal olarak duyarlı filtreleme sağlayan yeni bir deneysel Tahmine Dayalı IntelliSense özelliği eklendi. Daha fazla bilgi için bkz . C++ IntelliSense Geliştirmeleri - Tahmine Dayalı IntelliSense ve Filtreleme.
Tüm Başvuruları Bul (Shift+F12) artık karmaşık kod temellerinde bile kolayca gezinmenize yardımcı olur. Başvurularınızı net bir şekilde anlayabilmek için gelişmiş gruplandırma, filtreleme, sıralama, sonuçlarda arama ve (bazı diller için) renklendirme sağlar. C++ için yeni kullanıcı arabirimi, bir değişkenden okuma veya değişkene yazma hakkında bilgi içerir.
Noktadan Oka IntelliSense özelliği deneyselden gelişmişe taşındı ve artık varsayılan olarak etkinleştirildi. Düzenleyicide Kapsamları Genişlet ve Önceliği Genişlet özellikleri deneyselden gelişmişe taşındı.
İmzayı Değiştir ve İşlevi Ayıkla deneysel yeniden düzenleme özellikleri artık varsayılan olarak kullanılabilir.
C++ projeleri için deneysel bir 'Daha hızlı proje yükü' özelliği eklendi. Bir C++ projesini bir sonraki açışınızda daha hızlı yüklenir ve bundan sonraki süre çok daha hızlı yüklenir!
Bu özelliklerden bazıları diğer diller için ortaktır ve bazıları C++ diline özeldir. Bu yeni özellikler hakkında daha fazla bilgi için bkz . Visual Studio "15" Önizleme 5 Duyuruları.
Visual Studio 2017 sürüm 15.7 Sürüm Notları
- ClangFormat desteği eklendi. Daha fazla bilgi için bkz . Visual Studio 2017'de ClangFormat Desteği.
Klasör Aç ile MSBuild dışı projeler
Visual Studio 2017, Klasör Aç özelliğini tanıtır. Herhangi bir çözüm veya proje oluşturmaya gerek kalmadan kaynak kodu içeren bir klasörde kod oluşturmanıza, derlemenize ve hata ayıklamanıza olanak tanır. Artık projeniz MSBuild tabanlı bir proje olmasa bile Visual Studio'yu kullanmaya başlamak daha kolaydır. Klasör Aç güçlü kod anlama, düzenleme, oluşturma ve hata ayıklama özelliklerine erişmenizi sağlar. Bunlar, Visual Studio'nun MSBuild projeleri için zaten sağladığıyla aynıdır. Daha fazla bilgi için bkz . C++ için Klasör projelerini açma.
- Klasör Aç deneyimi geliştirmeleri. Deneyimi şu .json dosyaları aracılığıyla özelleştirebilirsiniz:
- IntelliSense ve göz atma deneyimini özelleştirmek için CppProperties.json.
- Derleme adımlarını özelleştirmek için Tasks.json.
- Hata ayıklama deneyimini özelleştirmek için Launch.json.
Visual Studio 2017 sürüm 15.3
- Alternatif derleyiciler ve MinGW ve Cygwin gibi derleme ortamları için geliştirilmiş destek. Daha fazla bilgi için bkz . Visual C++ ile MinGW ve Cygwin kullanma ve Klasörü Aç.
- CppProperties.json ve CMakeSettings.json genel ve yapılandırmaya özgü ortam değişkenlerini tanımlama desteği eklendi. Bu ortam değişkenleri, launch.vs.json tanımlanan hata ayıklama yapılandırmaları ve tasks.vs.json'deki görevler tarafından kullanılabilir. Daha fazla bilgi için bkz . Visual C++ ile Ortamınızı Özelleştirme ve Klasörü Aç.
- CMake'nin Ninja oluşturucusunun 64 bit platformları kolayca hedefleme özelliği de dahil olmak üzere geliştirilmiş desteği.
Klasör Aç aracılığıyla CMake desteği
Visual Studio 2017, MSBuild proje dosyalarına (.vcxproj) dönüştürmeden CMake projelerini kullanma desteği sunar. Daha fazla bilgi için bkz . Visual Studio'da CMake projeleri. Klasör Aç ile CMake projelerinin açılması, ortamı C++ düzenleme, oluşturma ve hata ayıklama için otomatik olarak yapılandırılır.
C++ IntelliSense, kök klasörde bir CppProperties.json dosyası oluşturmaya gerek kalmadan çalışır. Kullanıcıların CMake ve CppProperties.json dosyaları tarafından sağlanan yapılandırmalar arasında kolayca geçiş yapmalarını sağlamak için yeni bir açılan liste ekledik.
CMakeLists.txt dosyasıyla aynı klasörde yer alan CMakeSettings.json dosyasıyla ek yapılandırma gerçekleştirilmesi desteklenir.
Visual Studio 2017 sürüm 15.3
- CMake Ninja oluşturucu için destek eklendi.
Visual Studio 2017 sürüm 15.4
- Mevcut CMake önbelleklerini içeri aktarma desteği eklendi.
Visual Studio 2017 sürüm 15.5
- CMake 3.11 desteği, CMake projelerinde kod analizi, Çözüm Gezgini Hedefler görünümü, önbellek oluşturma seçenekleri ve tek dosya derlemesi eklendi. Daha fazla bilgi için bkz. Visual Studio'da CMake Desteği ve Visual Studio'da CMake projeleri.
Windows masaüstü geliştirme
Özgün C++ iş yükünü yüklemek için şimdi daha ayrıntılı bir yükleme deneyimi sağlıyoruz. Yalnızca ihtiyacınız olan araçları yüklemenize olanak tanıyan seçilebilir bileşenler ekledik. Yükleyici kullanıcı arabiriminde listelenen bileşenler için belirtilen yükleme boyutları yanlıştır ve toplam boyutu hafife alır.
C++ masaüstü iş yükünde Win32 projelerini başarıyla oluşturabilmek için, hem araç takımını hem de Windows SDK’yi yüklemelisiniz. Çalıştığından emin olmak için önerilen (seçili) VC++ 2017 v141 araç takımını (x86, x64) ve Windows 10 SDK'sını (10.0.nnnnn) yükleyin. Gerekli araçlar yüklenmezse projeler başarıyla oluşturulmaz ve sihirbaz yanıt vermeyi durdurur.
Visual Studio 2017 sürüm 15.5
Visual C++ Derleme araçları (daha önce tek başına bir ürün olarak kullanılabilir) artık Visual Studio Yükleyicisi bir iş yükü olarak eklenmiştir. Bu iş yükü, Visual Studio IDE'yi yüklemeden yalnızca C++ projeleri oluşturmak için gereken araçları yükler. Hem v140 hem de v141 araç kümeleri dahildir. v141 araç takımı, Visual Studio 2017 sürüm 15.5'teki en son geliştirmeleri içerir. Daha fazla bilgi için bkz. Visual Studio Derleme Araçları şimdi VS2017 ve VS2015 MSVC Araç Kümeleri'ni içerir.
C++ ile Linux geliştirme
Popüler Linux Geliştirme için Visual C++ eklentisi artık Visual Studio’nun bir parçasıdır. Bu yükleme, Linux ortamında çalışan C++ uygulamalarını geliştirmek ve hatalarını ayıklamak için ihtiyacınız olan her şeyi sağlar.
Visual Studio 2017 sürüm 15.2
Platformlar arası kod paylaşımı ve tür görselleştirmesinde iyileştirmeler yapıldı. Daha fazla bilgi için bkz . Platformlar arası kod paylaşımı ve tür görselleştirmesi için Linux C++ geliştirmeleri.
Visual Studio 2017 sürüm 15.5
- Linux iş yükü, dosyaları uzak Linux makineleriyle eşitlemek için sftp'ye alternatif olarak rsync desteği ekledi.
- ARM mikrodenetleyicilerini hedefleyen çapraz derleme desteği eklendi. Yüklemede etkinleştirmek için C++ ile Linux geliştirme iş yükünü seçin ve Katıştırılmış ve IoT Geliştirme seçeneğini belirleyin. Bu seçenek ARM GCC çapraz derleme araçlarını ve Make'i yüklemenize ekler. Daha fazla bilgi için bkz . Visual Studio'da ARM GCC Çapraz Derleme.
- CMake için destek eklendi. Artık mevcut CMake kod tabanınızı Visual Studio projesine dönüştürmek zorunda kalmadan çalışabilirsiniz. Daha fazla bilgi için bkz . Linux CMake Projesi Yapılandırma.
- Uzak görevleri çalıştırmak için destek eklendi. Bu özellik, Visual Studio'nun Bağlantı Yöneticisi tanımlanan uzak bir sistemde herhangi bir komutu çalıştırmanıza olanak tanır. Uzak görevler, uzak sisteme dosya kopyalama özelliği de sağlar. Daha fazla bilgi için bkz . Linux CMake Projesi Yapılandırma.
Visual Studio 2017 sürüm 15.7 Sürüm Notları
- Linux iş yükü senaryolarında çeşitli iyileştirmeler. Daha fazla bilgi için bkz . Proje Sisteminde Linux C++ İş Yükü geliştirmeleri, Linux Konsol Penceresi, rsync ve İşleme Ekle.
- Uzak Linux bağlantılarında üst bilgiler için IntelliSense. Daha fazla bilgi için bkz . Uzak Linux Üst Bilgileri için IntelliSense ve Linux CMake Projesi Yapılandırma.
C++ ile oyun geliştirme
C++’ın gücünü kullanarak DirectX veya Cocos2d tarafından desteklenen profesyonel oyunlar oluşturun.
Android ve iOS için C++ ile mobil geliştirme
Artık Visual Studio kullanarak Android ve iOS platformlarını hedefleyebilen mobil uygulamalar geliştirebilir ve hatalarını ayıklayabilirsiniz.
Evrensel Windows Uygulamaları
C++, Evrensel Windows Uygulaması iş yükü için isteğe bağlı bir bileşen olarak sağlanır. Şu anda C++ projelerini el ile yükseltmeniz gerekir. Visual Studio 2017'de v140 hedefli bir Evrensel Windows Platformu projesi açabilirsiniz. Ancak Visual Studio 2015 yüklü değilse proje özellik sayfalarında v141 platform araç takımını seçmeniz gerekir.
Evrensel Windows Platformu üzerinde C++ için yeni seçenekler (UWP)
Artık Evrensel Windows Platformu ve Windows Mağazası için C++ uygulamaları yazmak ve paketlemek için yeni seçenekleriniz var: Masaüstü Köprüsü altyapısı, mevcut masaüstü uygulamanızı veya COM nesnenizi Windows Mağazası aracılığıyla dağıtım için paketlemenizi sağlar. Alternatif olarak, dışarıdan yükleme yoluyla mevcut kanallarınız aracılığıyla dağıtım için de. Windows 10'daki yeni özellikler, masaüstü uygulamanıza çeşitli yollarla UWP işlevselliği eklemenize olanak tanır. Daha fazla bilgi için bkz. Masaüstü Köprüsü.
Visual Studio 2017 sürüm 15.5
Masaüstü uygulamalarının Masaüstü Köprüsü ile paketlenmesi büyük ölçüde kolaylaştıran bir Windows Uygulaması Paketleme Projesi proje şablonu eklenir. Dosya | altında kullanılabilir Yeni | Proje | Yüklendi | Visual C++ | Evrensel Windows Platformu. Daha fazla bilgi için bkz. Visual Studio kullanarak uygulama paketleme (Masaüstü Köprüsü).
Yeni kod yazarken artık yalnızca üst bilgi dosyalarında uygulanan Windows Çalışma Zamanı için standart bir C++ dil projeksiyonu olan C++/WinRT kullanabilirsiniz. Standartlara uygun herhangi bir C++ derleyicisini kullanarak Windows Çalışma Zamanı API'leri kullanmanıza ve yazmanıza olanak tanır. C++/WinRT, C++ geliştiricilerine modern Windows API'sine birinci sınıf erişim sağlamak için tasarlanmıştır. Daha fazla bilgi için bkz . C++/WinRT.
Windows SDK Insider Preview'ın 17025 derlemesinde başlayan C++/WinRT, Windows SDK'sında yer alır. Daha fazla bilgi için bkz. C++/WinRT artık Windows SDK'sını içeriyor.
Clang/C2 platform araç takımı
Visual Studio 2017 ile birlikte gelen Clang/C2 araç takımı artık büyük projeler oluşturmak için çok önemli olan anahtarı destekliyor /bigobj
. Ayrıca hem derleyici ön uçta hem de arka uçta birkaç önemli hata düzeltmesi içerir.
C++ kod analizi
C++ Temel Yönergeleri’nin uygulanmasını sağlayan C++ Temel Denetleyicileri artık Visual Studio ile dağıtılmaktadır. Projenin özellik sayfalarında kod çözümleme uzantıları sayfasında damalarını etkinleştirin. Kod analizini çalıştırdığınızda uzantılar eklenir. Daha fazla bilgi için bkz . C++ Temel Yönergeleri denetleyicisini kullanma.
Visual Studio 2017 sürüm 15.3
- Kaynak yönetimiyle ilgili kurallar için destek eklendi.
Visual Studio 2017 sürüm 15.5
Yeni C++ Çekirdek Yönergeleri denetimleri akıllı işaretçi doğruluğunu, genel başlatıcıların doğru kullanımını ve ve hatalı atamalar gibi
goto
yapıların kullanımlarını işaretlemeyi kapsar.15.3'te bulabileceğiniz bazı uyarı numaraları artık 15.5'te kullanılamaz. Bu uyarıların yerine daha belirgin denetimler kullanıma sunuldu.
Visual Studio 2017 sürüm 15.6
- Tek dosyalı çözümleme desteği ve analiz çalışma zamanı performansında geliştirmeler eklendi. Daha fazla bilgi için bkz . Visual Studio 2017 15.6 Preview 2 için C++ Statik Çözümleme Geliştirmeleri
Visual Studio 2017 sürüm 15.7 Sürüm Notları
- için, çalıştırılacak kod çözümleme kurallarını belirtmenize olanak tanıyan desteği eklendi
/analyze:ruleset
. - Daha fazla C++ Temel Yönerge kuralı için destek eklendi. Daha fazla bilgi için bkz . C++ Temel Yönergeleri denetleyicisini kullanma.
Visual Studio 2017'de birim testi
Visual Studio 2017 sürüm 15.5
Google Test Bağdaştırıcısı ve Boost.Test Bağdaştırıcısı artık C++ iş yüküyle Masaüstü Geliştirme'nin bileşenleri olarak kullanılabilir. Bunlar Test Gezgini ile tümleşik olarak bulunur. CMake projeleri için CTest desteği eklenir (Klasör Aç kullanılarak), ancak Test Gezgini ile tam tümleştirme henüz sağlanmamıştır. Daha fazla bilgi için bkz . C/C++ için birim testleri yazma.
Visual Studio 2017 sürüm 15.6
- Dinamik kitaplık desteği için
Boost.Test
destek eklendi. Boost.Test
Artık IDE'de bir öğe şablonu kullanılabilir.
Daha fazla bilgi için bkz Boost.Test
. Birim Testi: Dinamik Kitaplık desteği ve Yeni Öğe Şablonu.
Visual Studio 2017 sürüm 15.7 Sürüm Notları
C++ birim testi projeleri için CodeLens desteği eklendi. Daha fazla bilgi için bkz . C++ Birim Testi için CodeLens Duyuruları.
Visual Studio grafik tanılaması
Visual Studio Grafik Tanılama araçları: Direct3D uygulamalarında işleme ve performans sorunlarını kaydetmek ve çözümlemek için bunları kullanabilirsiniz. Bunları Windows bilgisayarınızda, Bir Windows cihaz öykünücüsunda veya uzak bir bilgisayarda veya cihazda yerel olarak çalışan uygulamalarda kullanın.
Köşe ve Geometri gölgelendiricileri için Giriş ve Çıkış: Köşe gölgelendiricilerinin ve geometri gölgelendiricilerinin giriş ve çıkışını görüntüleme özelliği en çok istenen özelliklerden biri olmuştur. Artık araçlarda desteklenmektedir. Aşağıdaki tabloda giriş ve çıkışını incelemeye başlamak için İşlem Hattı Aşamaları görünümünde VS veya GS aşamasını seçin.
Nesne tablosunda arama ve filtreleme: Aradığınız kaynakları bulmak için hızlı ve kolay bir yol sağlar.
Kaynak Geçmişi: Bu yeni görünüm, yakalanan bir çerçevenin işlenmesi sırasında kullanılan kaynağın tüm değişiklik geçmişini görmenin kolay bir yolunu sağlar. Herhangi bir kaynağın geçmişini çağırmak için kaynak köprülerinin yanındaki saat simgesine tıklayın.
Kaynağın değişiklik geçmişiyle doldurulmuş yeni Kaynak Geçmişi araç penceresini görüntüler.
Tam çağrı yığını yakalama özelliği etkinken çerçeveleri yakalayabilirsiniz. Bu, her değişiklik olayının bağlamını hızla çıkarmanıza ve Visual Studio projenizde incelemenize olanak tanır. Grafik Tanılama altındaki Visual Studio Araçları > Seçenekleri iletişim kutusunda tam yığın yakalama seçeneğini ayarlayın.
API İstatistikleri: Çerçevenizdeki API kullanımının üst düzey bir özetini görüntüleyin. Hiç yapmadığınızı fark etmeyebilecek aramaları veya çok sık yaptığınız aramaları keşfetmek için kullanışlıdır. Bu pencere, Visual Studio Grafik Çözümleyicisi'nde API İstatistiklerini Görüntüle > aracılığıyla kullanılabilir.
Bellek İstatistikleri: Sürücünün çerçevede oluşturduğunuz kaynaklar için ne kadar bellek ayıracağını görüntüleyin. Bu pencere, Visual Studio Grafik Çözümleyicisi'nde Bellek İstatistiklerini Görüntüle > aracılığıyla kullanılabilir. Elektronik tabloda görüntülemek üzere verileri CSV dosyasına kopyalamak için sağ tıklayın ve Tümünü Kopyala'yı seçin.
Çerçeve Doğrulama: Yeni hatalar ve uyarılar listesi, Direct3D hata ayıklama katmanı tarafından algılanan olası sorunlara göre olay listenizde gezinmek için kolay bir yol sağlar. Pencereyi açmak için Visual Studio Grafik Çözümleyicisi'nde Çerçeve Doğrulamayı Görüntüle'ye > tıklayın. Ardından çözümlemeyi başlatmak için Doğrulamayı Çalıştır'a tıklayın. Çerçevenin karmaşıklık düzeyine bağlı olarak tamamlanması birkaç dakika sürebilir.
D3D12 için Çerçeve Analizi: Çekme çağrısı performansını yönlendirilmiş "durum" denemeleriyle analiz etmek için Çerçeve Analizi'ni kullanın. Çerçeve Analizi sekmesine geçin ve raporu görüntülemek için analizi çalıştırın.
GPU Kullanımı geliştirmeleri: Açık izlemeler, daha ayrıntılı analiz için GPUView veya Windows Performans Analizi (WPA) aracıyla Visual Studio GPU Kullanımı profil oluşturucu aracılığıyla alınabilir. Windows Performans Araç Seti'ni yüklediyseniz, biri WPA için, diğeri GPUView için, oturuma genel bakışın sağ alt kısmında olmak üzere iki köprü vardır.
Bu bağlantı aracılığıyla GPUView'da açtığınız izlemeler eşitlenmiş VS ve GPUView zaman çizelgesi yakınlaştırma ve kaydırma desteği sağlar. VS'deki onay kutusu eşitlemenin etkinleştirilip etkinleştirilmediğini denetler.