Visual Studio projelerinde özellik devralma

Visual Studio yerel proje sistemi MSBuild'i temel alır. MSBuild, herhangi bir türde proje oluşturmak için dosya biçimlerini ve kurallarını tanımlar. Birden çok yapılandırma ve platform için derlemenin karmaşıklığının çoğunu yönetir. Nasıl çalıştığını anlamak yararlı olacaktır. Özel yapılandırmalar tanımlamak istiyorsanız bu özellikle önemlidir. İsterseniz, birden çok projede paylaşabileceğiniz ve içeri aktarabileceğiniz yeniden kullanılabilir özellik kümeleri oluşturmak için de kullanabilirsiniz.

.vcxproj dosyası, .props dosyaları ve .targets dosyaları

Proje özellikleri birkaç dosyada depolanır. Bazıları doğrudan .vcxproj proje dosyasında depolanır. Diğerleri ise proje dosyasının içeri aktardığı ve varsayılan değerleri sağlayan diğer .targets.props dosyalardan gelir. Visual Studio 2015 proje dosyalarını, temel dizininin %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\v140altındaki yerel ayara özgü bir klasörde bulabilirsiniz.

Proje özellikleri birkaç dosyada depolanır. Bazıları doğrudan .vcxproj proje dosyasında depolanır. Diğerleri ise proje dosyasının içeri aktardığı ve varsayılan değerleri sağlayan diğer .targets.props dosyalardan gelir. Visual Studio 2017 proje dosyalarını, temel dizininin %VSINSTALLDIR%Common7\IDE\VC\VCTargets\altındaki yerel ayara özgü bir klasörde bulabilirsiniz.

Proje özellikleri birkaç dosyada depolanır. Bazıları doğrudan .vcxproj proje dosyasında depolanır. Diğerleri ise proje dosyasının içeri aktardığı ve varsayılan değerleri sağlayan diğer .targets.props dosyalardan gelir. Visual Studio proje dosyalarını, temel dizininin %VSINSTALLDIR%\MSBuild\Microsoft\VC\<version>altındaki yerel ayara özgü bir klasörde bulabilirsiniz. <version>, Visual Studio sürümüne özgüdür. v160 Visual Studio 2019 içindir.

Özellikler, kendi projenize ekleyebileceğiniz tüm özel .props dosyalarda da depolanır. Bu dosyaları el ile DÜZENLEMEMENizi kesinlikle öneririz. Bunun yerine, MSBuild ve .vcxproj dosyaları ayrıntılı olarak anlamadığınız sürece, IDE'deki özellik sayfalarını kullanarak devralmaya katılanlar başta olmak üzere tüm özellikleri değiştirin.

Daha önce gösterildiği gibi, aynı yapılandırma için aynı özelliğe bu farklı dosyalarda farklı bir değer atanabilir. Bir proje oluşturduğunuzda, MSBuild altyapısı proje dosyasını ve içeri aktarılan tüm dosyaları daha sonra açıklanan iyi tanımlanmış bir sırada değerlendirir. Her dosya değerlendirildikçe, bu dosyada tanımlanan tüm özellik değerleri mevcut değerleri geçersiz kılar. Belirtilmeyen değerler daha önce değerlendirilen dosyalardan devralınır. Özellik sayfaları içeren bir özellik ayarladığınızda, özelliği ayarladığınız yere dikkat etmek de önemlidir. Bir dosyada .props bir özelliği "X" olarak ayarlarsanız, ancak özellik proje dosyasında "Y" olarak ayarlanırsa, proje özelliği "Y" olarak ayarlanır. Aynı özellik dosya gibi bir proje öğesinde "Z" olarak .cpp ayarlanırsa, MSBuild altyapısı "Z" değerini kullanır.

Temel devralma ağacı şöyledir:

  1. MSBuild CPP Araç Takımı'ndaki varsayılan ayarlar ( Microsoft.Cpp.Default.props dosya tarafından içeri aktarılan temel dizindeki .vcxproj dosya).)

  2. Özellik sayfaları

  3. .vcxproj Dosya. (Bu dosya varsayılan ve özellik sayfası ayarlarını geçersiz kılabilir.)

  4. Öğelere ait meta veriler

Bahşiş

Özellik sayfasında, kalın olarak bir özellik geçerli bağlamda tanımlanır. Normal yazı tipindeki özellik devralınan özelliktir.

Tüm içeri aktarılan değerlerle genişletilmiş proje dosyasını görüntüleme

Bazen, belirli bir özellik değerinin nasıl devralındığını belirlemek için genişletilmiş dosyayı görüntülemek yararlıdır. Genişletilmiş sürümü görüntülemek için, Visual Studio komut isteminde aşağıdaki komutu girin. (Yer tutucu dosya adlarını, kullanmak istediğiniz dosya adlarıyla değiştirin.)

msbuild /pp:temp.txt myapp.vcxproj

GENIŞLETILMIŞ proje dosyaları, MSBuild hakkında bilgi sahibi değilseniz büyük ve anlaşılması zor olabilir. Bir proje dosyasının temel yapısı şöyledir:

  1. IDE'de kullanıma sunulmayan temel proje özellikleri.

  2. Microsoft.cpp.default.propsbazı temel, araç kümesinden bağımsız özellikleri tanımlayan öğesini içeri aktarın.

  3. Genel Yapılandırma özellikleri (Genel Yapılandırma sayfasında PlatformToolset ve Project varsayılan özellikleri olarak sunulur). Bu özellikler, sonraki adımda hangi araç takımının ve iç özellik sayfalarının içeri aktarılacağını Microsoft.cpp.props belirler.

  4. proje varsayılanlarının Microsoft.cpp.propsçoğunu ayarlayan öğesini içeri aktarın.

  5. Dosyalar da dahil olmak üzere .user tüm özellik sayfalarını içeri aktarma. Bu özellik sayfaları PlatformToolset ve Project varsayılan özellikleri dışında her şeyi geçersiz kılabilir.

  6. Proje yapılandırma özelliklerinin geri kalanı. Bu değerler özellik sayfalarında ayarlanmış değerleri geçersiz kılabilir.

  7. Meta verileriyle birlikte öğeler (dosyalar). Bu öğeler, diğer özelliklerden ve içeri aktarmalardan önce olsalar bile MSBuild değerlendirme kurallarında her zaman son sözcük olur.

Daha fazla bilgi için bkz . MSBuild Özellikleri.

Derleme yapılandırmaları

Yapılandırma, yalnızca ad verilen rastgele bir özellik grubudur. Visual Studio, Hata Ayıklama ve Yayın yapılandırmaları sağlar. Her bir hata ayıklama derlemesi veya yayın derlemesi için çeşitli özellikleri uygun şekilde ayarlar. Özel yapılandırmaları tanımlamak için Configuration Manager'ı kullanabilirsiniz. Bunlar, belirli bir derleme türü için özellikleri gruplandırmak için kullanışlı bir yoldur.

Derleme yapılandırmaları hakkında daha iyi bir fikir edinmek için Property Manager'ı açın. Ayarlarınıza bağlı olarak Özellik Yöneticisini Görüntüle veya Diğer Windows > Özellik Yöneticisini Görüntüle'yi > seçerek açabilirsiniz>. Property Manager,projedeki her yapılandırma ve platform çifti için düğümlere sahiptir. Bu düğümlerin her birinin altında, söz konusu yapılandırma için belirli özellikler ayarlayan özellik sayfaları (.props dosyalar) için düğümler bulunur.

Screenshot of the Property Manager window.

Örneğin, Özellik Sayfaları'ndaki Genel bölmesine gidebilirsiniz. Karakter Kümesi özelliğini "Unicode Kullan" yerine "Ayarlanmadı" olarak değiştirin ve tamam'a tıklayın. Özellik Yöneticisi artık Unicode Desteği özellik sayfası göstermez. Geçerli yapılandırma için kaldırılır, ancak diğer yapılandırmalar için hala oradadır.

Özellik Yöneticisi ve özellik sayfaları hakkında daha fazla bilgi için bkz . Visual Studio C++ proje ayarlarını paylaşma veya yeniden kullanma.

Bahşiş

Dosya .user eski bir özelliktir. Özellikleri yapılandırmaya ve platforma göre doğru şekilde gruplandırmak için silmenizi öneririz.