.vcxproj
Dateien und Wild Karte
Die Visual Studio-IDE unterstützt bestimmte Konstrukte in Projektelementen in .vcxproj
Dateien nicht. Diese nicht unterstützten Konstrukte umfassen Wild Karte s, semikolonstrennte Listen oder MSBuild-Makros, die auf mehrere Dateien erweitert werden. Das .vcxproj
Projektsystem für C++-Builds ist restriktiver als MSBuild. Jedes Projektelement muss über ein eigenes MSBuild-Element verfügen. Weitere Informationen zum .vcxproj
Dateiformat finden Sie unter .vcxproj
und .props
Dateistruktur.
Diese Konstruktbeispiele werden von der IDE nicht unterstützt:
<ItemGroup>
<None Include="*.txt">
<ClCompile Include="a.cpp;b.cpp"/>
<ClCompile Include="@(SomeItems)" />
</ItemGroup>
Wenn eine .vcxproj
Projektdatei, die diese Konstrukte enthält, in die IDE geladen wird, funktioniert das Projekt möglicherweise zuerst. Probleme werden jedoch wahrscheinlich, sobald das Projekt von Visual Studio geändert und dann auf dem Datenträger gespeichert wird. Es können zufällige Abstürze und nicht definiertes Verhalten auftreten.
In Visual Studio 2019, Version 16.7, erkennt Visual Studio beim Laden einer .vcxproj
Projektdatei automatisch nicht unterstützte Einträge in Projektelementen. Während des Ladens der Lösung werden Warnungen im Ausgabefenster angezeigt.
Visual Studio 2019, Version 16.7, fügt auch schreibgeschützte Projektunterstützung hinzu. Die schreibgeschützte Unterstützung ermöglicht es der IDE, manuell erstellte Projekte zu verwenden, die nicht über die zusätzlichen Einschränkungen von bearbeitbaren IDE-Projekten verfügen.
Wenn Sie über eine .vcxproj
Datei verfügen, die mindestens eins der nicht unterstützten Konstrukte verwendet, können Sie sie ohne Warnungen in der IDE laden, indem Sie eine der folgenden Optionen verwenden:
- Alle Elemente explizit auflisten
- Markieren Des Projekts als schreibgeschützt
- Verschieben von Elementen in einen Zieltext Karte
Alle Elemente explizit auflisten
Derzeit gibt es keine Möglichkeit Karte Erweiterungselemente im fenster Projektmappen-Explorer in einem nicht schreibgeschützten Projekt sichtbar zu machen. Projektmappen-Explorer erwartet, dass Projekte alle Elemente explizit auflisten.
.vcxproj
Wenn Projekte in Visual Studio 2019, Version 16.7 oder höher, automatisch erweitert werden Karte sollen, legen Sie die ReplaceWildcardsInProjectItems
Eigenschaft auf true
. Es wird empfohlen, eine Directory.Build.props
Datei in einem Stammverzeichnis zu erstellen und diesen Inhalt zu verwenden:
<Project>
<PropertyGroup>
<ReplaceWildcardsInProjectItems>true</ReplaceWildcardsInProjectItems>
</PropertyGroup>
</Project>
Markieren Des Projekts als schreibgeschützt
In Visual Studio 2019, Version 16.7 und höher, können Sie Projekte als schreibgeschützt markieren. Um ihr Projekt schreibgeschützt zu markieren, fügen Sie der Datei die folgende Eigenschaft .vcxproj
oder eine der importierten Dateien hinzu:
<PropertyGroup>
<ReadOnlyProject>true</ReadOnlyProject>
</PropertyGroup>
Die <ReadOnlyProject>
Einstellung verhindert, dass Visual Studio das Projekt bearbeitet und speichert, sodass Sie alle MSBuild-Konstrukte darin verwenden können, einschließlich wilder Karte s.
Es ist wichtig zu wissen, dass der Projektcache nicht verfügbar ist, wenn Visual Studio wild Karte s in Projektelementen in der .vcxproj
Datei oder einem seiner Importe erkennt. Die Ladezeiten der Lösung in der IDE sind viel länger, wenn sie viele Projekte verwenden, die wild Karte verwenden.
Verschieben von Elementen in einen Zieltext Karte
Möglicherweise möchten Sie wild Karte verwenden, um Ressourcen zu sammeln, generierte Quellen hinzuzufügen usw. Wenn Sie sie nicht im fenster Projektmappen-Explorer aufgeführt haben, können Sie stattdessen dieses Verfahren verwenden:
Ändern Sie den Namen der Elementgruppe, um "wild" hinzuzufügen Karte. Beispiel:
<Image Include="*.bmp" /> <ClCompile Include="*.cpp" />
ändern Sie sie in:
<_WildCardImage Include="*.bmp" /> <_WildCardClCompile Include="*.cpp" />
Fügen Sie diese Inhalte zu Ihrer
.vcxproj
Datei hinzu. Oder fügen Sie sie einerDirectory.Build.targets
Datei in einem Stammverzeichnis hinzu, um alle Projekte unter diesem Stamm zu beeinflussen:<Target Name="AddWildCardItems" AfterTargets="BuildGenerateSources"> <ItemGroup> <Image Include="@(_WildCardImage)" /> <ClCompile Include="@(_WildCardClCompile)" /> </ItemGroup> </Target>
Diese Änderung macht den Build so, dass die Elemente angezeigt werden, die in der
.vcxproj
Datei definiert sind. Jetzt sind sie jedoch im Projektmappen-Explorer-Fenster nicht sichtbar, und sie verursachen keine Probleme in der IDE.Wenn Sie beim Öffnen dieser Dateien im Editor die richtigen IntelliSense-Elemente
_WildCardClCompile
anzeigen möchten, fügen Sie den folgenden Inhalt hinzu:<PropertyGroup> <ComputeCompileInputsTargets> AddWildCardItems $(ComputeCompileInputsTargets) </ComputeCompileInputsTargets> </PropertyGroup>
Effektiv können Sie platzhalter Karte für alle Elemente innerhalb eines Zieltexts verwenden. Sie können auch Wild Karte s in einem ItemGroup
Element verwenden, das nicht als Projektelement durch ein ProjectSchemaDefinition
.
Hinweis
Wenn Sie "wild" verschieben Karte aus einer .vcxproj
Datei in eine importierte Datei eingeschlossen wird, werden sie im Projektmappen-Explorer-Fenster nicht angezeigt. Durch diese Änderung kann Ihr Projekt auch ohne Änderung in der IDE geladen werden. Dieser Ansatz wird jedoch nicht empfohlen, da er den Projektcache deaktiviert.
Siehe auch
Festlegen der Compiler- und Buildeigenschaften (C++) in Visual Studio
Eigenschaftenseite: XML-Dateien
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für