Aracılığıyla paylaş


.vcxproj dosyalar ve joker karakterler

Visual Studio IDE, dosyalardaki proje öğelerindeki .vcxproj belirli yapıları desteklemez. Bu desteklenmeyen yapılar joker karakterler, noktalı virgülle ayrılmış listeler veya birden çok dosyaya genişletilen MSBuild makrolarıdır. .vcxproj C++ derlemeleri için proje sistemi MSBuild'den daha kısıtlayıcıdır. Her proje öğesinin kendi MSBuild öğesine sahip olması gerekir. Dosya biçimi hakkında .vcxproj daha fazla bilgi için bkz .vcxproj . ve .props dosya yapısı.

Bu yapı örnekleri IDE tarafından desteklenmez:

<ItemGroup>
  <None Include="*.txt">
  <ClCompile Include="a.cpp;b.cpp"/>
  <ClCompile Include="@(SomeItems)" />
</ItemGroup>

Bu yapıları içeren bir .vcxproj proje dosyası IDE'ye yüklenirse, proje ilk başta çalışıyor gibi görünebilir. Ancak, proje Visual Studio tarafından değiştirilip diske kaydedilir kaydedilmez büyük olasılıkla sorunlar vardır. Rastgele kilitlenmeler ve tanımsız davranışlarla karşılaşabilirsiniz.

Visual Studio 2019 sürüm 16.7'de, Visual Studio bir .vcxproj proje dosyasını yüklediğinde, proje öğelerindeki desteklenmeyen girdileri otomatik olarak algılar. Çözüm yüklemesi sırasında Çıkış penceresinde uyarılar görürsünüz.

Visual Studio 2019 sürüm 16.7 ayrıca salt okunur proje desteği de ekler. Salt okunur destek, IDE'nin IDE tarafından düzenlenebilir projelerin ek sınırlamalarına sahip olmayan el ile yazılmış projeleri kullanmasına olanak tanır.

Desteklenmeyen yapılardan birini veya daha fazlasını kullanan bir .vcxproj dosyanız varsa, şu seçeneklerden birini kullanarak IDE'de uyarı olmadan yüklenmesini sağlayabilirsiniz:

  • Tüm öğeleri açıkça listele
  • Projenizi salt okunur olarak işaretleme
  • Joker karakter öğelerini hedef gövdeye taşıma

Tüm öğeleri açıkça listele

Şu anda, joker karakter genişletme öğelerini salt okunur olmayan bir projede Çözüm Gezgini penceresinde görünür hale getirmenin bir yolu yoktur. Çözüm Gezgini projelerin tüm öğeleri açıkça listelemesini bekler.

Visual Studio 2019 sürüm 16.7 veya sonraki sürümlerinde projelerin joker karakterleri otomatik olarak genişletmesini ReplaceWildcardsInProjectItems sağlamak .vcxproj için özelliğini olarak trueayarlayın. Kök dizinde bir Directory.Build.props dosya oluşturmanızı ve şu içeriği kullanmanızı öneririz:

<Project>
  <PropertyGroup>
    <ReplaceWildcardsInProjectItems>true</ReplaceWildcardsInProjectItems>
  </PropertyGroup>
</Project>

Projenizi salt okunur olarak işaretleme

Visual Studio 2019 sürüm 16.7 ve sonraki sürümlerinde projeleri salt okunur olarak işaretleyebilirsiniz. Projenizi salt okunur olarak işaretlemek için dosyanıza .vcxproj veya içeri aktarmış olduğu dosyalardan herhangi birine aşağıdaki özelliği ekleyin:

<PropertyGroup>
    <ReadOnlyProject>true</ReadOnlyProject>
</PropertyGroup>

Bu <ReadOnlyProject> ayar Visual Studio'un projeyi düzenlemesini ve kaydetmesini engeller, böylece joker karakterler de dahil olmak üzere içindeki tüm MSBuild yapılarını kullanabilirsiniz.

Visual Studio dosyadaki proje öğelerinde .vcxproj joker karakterler algılarsa veya içeri aktarma işlemlerinden herhangi birinde proje önbelleğinin kullanılamadığını bilmeniz önemlidir. Joker karakter kullanan çok sayıda projeniz varsa IDE'deki çözüm yükleme süreleri çok daha uzun olur.

Joker karakter öğelerini hedef gövdeye taşıma

Kaynakları toplamak, oluşturulan kaynakları eklemek vb. için joker karakterler kullanmak isteyebilirsiniz. Çözüm Gezgini penceresinde listelenmelerine ihtiyacınız yoksa, bunun yerine şu yordamı kullanabilirsiniz:

  1. Joker karakter eklemek için öğe grubunun adını değiştirin. Örneğin, yerine:

    <Image Include="*.bmp" />
    <ClCompile Include="*.cpp" />
    

    şu şekilde değiştirin:

    <_WildCardImage Include="*.bmp" />
    <_WildCardClCompile Include="*.cpp" />
    
  2. Bu içeriği dosyanıza .vcxproj ekleyin. İsterseniz, bu Directory.Build.targets kök dizinin altındaki tüm projeleri etkilemek için bunu kök dizindeki bir dosyaya da ekleyebilirsiniz:

    <Target Name="AddWildCardItems"
        AfterTargets="BuildGenerateSources">
      <ItemGroup>
        <Image Include="@(_WildCardImage)" />
        <ClCompile Include="@(_WildCardClCompile)" />
      </ItemGroup>
    </Target>
    

    Bu değişiklik, derlemenin dosyada .vcxproj tanımlandığı şekilde öğeleri görmesini sağlar. Ancak, artık Çözüm Gezgini penceresinde görünmezler ve IDE'de sorunlara neden olmazlar.

  3. Düzenleyicide bu dosyaları açtığınızda öğeler için doğru IntelliSense'i göstermek için _WildCardClCompile aşağıdaki içeriği ekleyin:

    <PropertyGroup>
      <ComputeCompileInputsTargets>
        AddWildCardItems
        $(ComputeCompileInputsTargets)
      </ComputeCompileInputsTargets>
    </PropertyGroup>
    

Etkili bir şekilde, hedef gövde içindeki öğeler için joker karakterler kullanabilirsiniz. Joker karakterleri, tarafından ItemGroup proje öğesi olarak tanımlanmayan bir ProjectSchemaDefinitioniçinde de kullanabilirsiniz.

Dekont

Joker karakter eklemelerini bir .vcxproj dosyadan içeri aktarılan bir dosyaya taşırsanız, bunlar Çözüm Gezgini penceresinde görünmez. Bu değişiklik, projenizin değişiklik yapmadan IDE'ye yüklenmesini de sağlar. Ancak, proje önbelleğini devre dışı bırakacağından bu yaklaşımı önermiyoruz.

Ayrıca bkz.

Visual Studio’da C++ derleyicisi ve derleme özelliklerini ayarlama
Özellik Sayfası XML Dosyaları