Dela via


Egenskapsarv i Visual Studio-projekt

Det interna Visual Studio-projektsystemet baseras på MSBuild. MSBuild definierar filformat och regler för att skapa projekt av något slag. Den hanterar det mesta av komplexiteten med att skapa för flera konfigurationer och plattformar. Det är användbart att förstå hur det fungerar. Det är särskilt viktigt om du vill definiera anpassade konfigurationer. Eller för att skapa återanvändbara uppsättningar med egenskaper som du kan dela och importera till flera projekt.

Filen .vcxproj, .props-filer och .targets-filer

Projektegenskaper lagras i flera filer. Vissa lagras direkt i .vcxproj projektfilen. Andra kommer från andra .targets filer eller .props filer som projektfilen importerar och som tillhandahåller standardvärden. Du hittar Visual Studio 2015-projektfilerna i en språkspecifik mapp under baskatalogen. %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\v140

Projektegenskaper lagras i flera filer. Vissa lagras direkt i .vcxproj projektfilen. Andra kommer från andra .targets filer eller .props filer som projektfilen importerar och som tillhandahåller standardvärden. Du hittar Visual Studio 2017-projektfilerna i en språkspecifik mapp under baskatalogen. %VSINSTALLDIR%Common7\IDE\VC\VCTargets\

Projektegenskaper lagras i flera filer. Vissa lagras direkt i .vcxproj projektfilen. Andra kommer från andra .targets filer eller .props filer som projektfilen importerar och som tillhandahåller standardvärden. Du hittar Visual Studio-projektfilerna i en språkspecifik mapp under baskatalogen. %VSINSTALLDIR%\MSBuild\Microsoft\VC\<version> <version> Är specifikt för versionen av Visual Studio. Det är v160 för Visual Studio 2019.

Egenskaper lagras också i anpassade .props filer som du kan lägga till i ditt eget projekt. Vi rekommenderar starkt att du INTE redigerar dessa filer manuellt. Använd i stället egenskapssidorna i IDE för att ändra alla egenskaper, särskilt de som deltar i arv, såvida du inte har en djup förståelse för MSBuild och .vcxproj filer.

Som vi visade tidigare kan samma egenskap för samma konfiguration tilldelas ett annat värde i dessa olika filer. När du skapar ett projekt utvärderar MSBuild-motorn projektfilen och alla importerade filer i en väldefinierad ordning som beskrivs senare. När varje fil utvärderas åsidosätter alla egenskapsvärden som definierats i filen de befintliga värdena. Alla värden som inte har angetts ärvs från filer som utvärderades tidigare. När du anger en egenskap med egenskapssidor är det också viktigt att vara uppmärksam på var du anger den. Om du anger en egenskap till "X" i en .props fil, men egenskapen är inställd på "Y" i projektfilen, skapas projektet med egenskapen inställd på "Y". Om samma egenskap är inställd på "Z" för ett projektobjekt, till exempel en .cpp fil, använder MSBuild-motorn värdet "Z".

Här är det grundläggande arvsträdet:

  1. Standardinställningar från MSBuild CPP Toolset ( Microsoft.Cpp.Default.props filen i baskatalogen som importeras av .vcxproj filen.)

  2. Egenskapsblad

  3. .vcxproj fil. (Den här filen kan åsidosätta standard- och egenskapsbladets inställningar.)

  4. Objektmetadata

Tips/Råd

På en egenskapssida definieras en egenskap i fetstil i den aktuella kontexten. En egenskap med normalt teckensnitt ärvs.

Visa en expanderad projektfil med alla importerade värden

Ibland är det användbart att visa den expanderade filen för att avgöra hur ett visst egenskapsvärde ärvs. Om du vill visa den expanderade versionen anger du följande kommando i en Visual Studio-kommandotolk. (Ändra platshållarfilnamnen till den du vill använda.)

msbuild /pp:temp.txtmyapp.vcxproj

Expanderade projektfiler kan vara stora och svåra att förstå om du inte är bekant med MSBuild. Här är den grundläggande strukturen för en projektfil:

  1. Grundläggande projektegenskaper som inte exponeras i IDE.

  2. Import av Microsoft.cpp.default.props, som definierar vissa grundläggande, verktygsuppsättningsoberoende egenskaper.

  3. Globala konfigurationsegenskaper (exponeras som Standardegenskaper för PlatformToolset och Project på sidan Konfiguration allmänt . Dessa egenskaper avgör vilken verktygsuppsättning och inbyggda egenskapsblad som importeras i Microsoft.cpp.props nästa steg.

  4. Import av Microsoft.cpp.props, som anger de flesta av projektets standardvärden.

  5. Import av alla egenskapsblad, inklusive .user filer. Dessa egenskapsblad kan åsidosätta allt utom standardegenskaperna PlatformToolset och Project .

  6. Resten av projektkonfigurationsegenskaperna. Dessa värden kan åsidosätta vad som angavs i egenskapsbladen.

  7. Objekt (filer) tillsammans med deras metadata. Dessa objekt är alltid sista ordet i MSBuild-utvärderingsregler, även om de inträffar före andra egenskaper och importer.

Mer information finns i MSBuild-egenskaper.

Skapa konfigurationer

En konfiguration är bara en godtycklig grupp med egenskaper som får ett namn. Visual Studio innehåller konfigurationer för felsökning och lansering. Var och en anger olika egenskaper på lämpligt sätt för en felsökningsversion eller versionsversion. Du kan använda Configuration Manager för att definiera anpassade konfigurationer. De är ett praktiskt sätt att gruppera egenskaper för en specifik version.

Om du vill få en bättre uppfattning om byggkonfigurationer öppnar du Property Manager. Du kan öppna den genom att välja Visa > egenskapshanterare eller Visa > annan Windows-egenskapshanterare>, beroende på dina inställningar. Property Manager har noder för varje konfiguration och plattformspar i projektet. Under var och en av dessa noder finns noder för egenskapsblad (.props filer) som anger vissa specifika egenskaper för den konfigurationen.

Skärmbild av fönstret Property Manager.

Du kan till exempel gå till fönstret Allmänt i egenskapssidorna. Ändra egenskapen Teckenuppsättning till "Inte inställd" i stället för "Använd Unicode" och klicka sedan på OK. Egenskapshanteraren visar nu inget egenskapsblad för Unicode Support . Den har tagits bort för den aktuella konfigurationen, men den finns fortfarande där för andra konfigurationer.

Mer information om Property Manager och egenskapsblad finns i Dela eller återanvända Visual Studio C++-projektinställningar.

Tips/Råd

Filen .user är en äldre funktion. Vi rekommenderar att du tar bort den för att hålla egenskaperna korrekt grupperade enligt konfiguration och plattform.