Typowe makra poleceń i właściwości programu MSBuild

W zależności od opcji instalacji program Visual Studio może udostępnić setki makr w projekcie programu Visual Studio opartym na .vcxproj programie MSBuild. Makra odpowiadają właściwościom programu MSBuild ustawionym domyślnie lub w .props plikach lub .targets w ustawieniach projektu. Tych makr można używać w dowolnym miejscu w oknie dialogowym Strony właściwości projektu, w którym akceptowane są ciągi. Te makra nie są uwzględniane wielkości liter.

Wyświetlanie bieżących właściwości i makr

Aby wyświetlić wszystkie aktualnie dostępne makra, otwórz strony właściwości projektu z menu głównego, wybierając pozycję Właściwości projektu>. W oknie dialogowym Strony właściwości wybierz wpis zawierający makro. Makro można rozpoznać za pomocą znaku dolara i nawiasu otaczającego jego nazwę.

Na przykład w okienku po lewej stronie wybierz pozycję Właściwości konfiguracji Katalogi> VC++, a następnie w okienku po prawej stronie wybierz pozycję Dołącz katalogi. Wartość w polach Katalogi dołączania to $(VC_IncludePath);$(WindowsSDK_IncludePath);.

Znak dolara i nawias wokół tych dwóch wartości wskazuje, że są makrami. Rozszerzenie tych dwóch makr ustawia katalogi dołączania do wyszukiwania.

Wybierz pozycję Dołącz katalogi , a lista rozwijana zostanie wyświetlona na końcu wiersza. Wybierz przycisk listy rozwijanej, a następnie wybierz pozycję Edytuj. W wyświetlonym oknie dialogowym Dołączanie katalogów wybierz przycisk Makra>>.

To rozwija okno dialogowe, aby wyświetlić bieżący zestaw właściwości i makr widocznych w programie Visual Studio wraz z bieżącą wartością dla każdego z nich. Aby uzyskać więcej informacji, zobacz sekcję Określanie wartości zdefiniowanych przez użytkownika w dokumentacji strony właściwości projektu C++.

Screenshot of the Visual Studio Include Directories dialog after choosing the Macros button.

Po prawej stronie znajduje się lista makr programu Visual Studio, takich jak $(AllowLocalNetworkLoopback). W okienku po lewej stronie jest wyświetlana obliczona wartość właściwości include katalogu. W dolnym okienku pokazano, które makra zostały rozwinięte, jeśli istnieją, w celu utworzenia wartości właściwości dołączania katalogu. Ponieważ makro Dołączanie katalogów jest kombinacją dwóch innych makr: $(VC_IncludePath) i $(WindowsSDK_IncludePath), dolne okienko z etykietą Dziedziczone wartości zawiera listę tych dwóch makr.

Lista typowych makr

W tej tabeli opisano często używany podzestaw dostępnych makr; istnieje wiele innych nie wymienionych tutaj. Przejdź do okna dialogowego Makra , aby wyświetlić wszystkie właściwości i ich bieżące wartości w projekcie. Aby uzyskać szczegółowe informacje na temat sposobu tworzenia i użycia definicji właściwości msbuild jako makr w .propsplikach , .targetsi .vcxproj , zobacz Właściwości programu MSBuild.

Makro opis
$(Configuration) Nazwa bieżącej konfiguracji projektu, na przykład "Debuguj".
$(DevEnvDir) Katalog instalacyjny programu Visual Studio (zdefiniowany jako dysk i ścieżka); zawiera ukośnik odwrotny (\).
$(FrameworkDir) Katalog, w którym zainstalowano program .NET Framework.
$(FrameworkSDKDir) Katalog, w którym zainstalowano program .NET Framework. Program .NET Framework mógł zostać zainstalowany w ramach programu Visual Studio lub oddzielnie.
$(FrameworkVersion) Wersja programu .NET Framework używana przez program Visual Studio. W połączeniu z $(FrameworkDir)programem pełna ścieżka do wersji programu .NET Framework używanej przez program Visual Studio.
$(FxCopDir) Ścieżka do fxcop.cmd pliku. Plik fxcop.cmd nie jest zainstalowany we wszystkich wersjach programu Visual Studio.
$(IntDir) Ścieżka do katalogu określonego dla plików pośrednich. Jeśli jest to ścieżka względna, pliki pośrednie przechodzą do tej ścieżki dołączonej do katalogu projektu. Ta ścieżka powinna mieć ukośnik odwrotny (\). Jest rozpoznawana jako wartość właściwości Katalog pośredni. Nie należy używać $(OutDir) do definiowania tej właściwości.
$(OutDir) Ścieżka do katalogu pliku wyjściowego. Jeśli jest to ścieżka względna, pliki wyjściowe przechodzą do tej ścieżki dołączonej do katalogu projektu. Ta ścieżka powinna mieć ukośnik odwrotny (\). Jest rozpoznawana jako wartość właściwości Output Directory . Nie należy używać $(IntDir) do definiowania tej właściwości.
$(Platform) Nazwa bieżącej platformy projektu, na przykład "Win32".
$(PlatformShortName) Krótka nazwa bieżącej architektury, na przykład "x86" lub "x64".
$(ProjectDir) Katalog projektu (zdefiniowany jako dysk i ścieżka); zawiera ukośnik odwrotny (\).
$(ProjectExt) Rozszerzenie pliku projektu. Zawiera on '.' przed rozszerzeniem pliku.
$(ProjectFileName) Nazwa pliku projektu (zdefiniowana jako nazwa podstawowa i rozszerzenie pliku).
$(ProjectName) Podstawowa nazwa projektu.
$(ProjectPath) Bezwzględna nazwa ścieżki projektu (zdefiniowana jako dysk + ścieżka + nazwa podstawowa + rozszerzenie pliku).
$(PublishDir) Lokalizacja wyjściowa miejsca docelowego publikowania; zawiera ukośnik odwrotny (\). Domyślnie jest to $(OutDir)app.publish\ folder .
$(RemoteMachine) Ustaw wartość właściwości Maszyna zdalna na stronie właściwości Debug. Aby uzyskać więcej informacji, zobacz Zmienianie Ustawienia projektu dla konfiguracji debugowania języka C/C++.
$(RootNameSpace) Przestrzeń nazw, jeśli istnieje, zawierająca aplikację.
$(SolutionDir) Katalog rozwiązania (zdefiniowany jako dysk i ścieżka); zawiera ukośnik odwrotny (\). Zdefiniowano tylko podczas kompilowania rozwiązania w środowisku IDE.
$(SolutionExt) Rozszerzenie pliku rozwiązania. Zawiera on '.' przed rozszerzeniem pliku. Zdefiniowano tylko podczas kompilowania rozwiązania w środowisku IDE.
$(SolutionFileName) Nazwa pliku rozwiązania (zdefiniowana jako nazwa podstawowa i rozszerzenie pliku). Zdefiniowano tylko podczas kompilowania rozwiązania w środowisku IDE.
$(SolutionName) Podstawowa nazwa rozwiązania. Zdefiniowano tylko podczas kompilowania rozwiązania w środowisku IDE.
$(SolutionPath) Bezwzględna nazwa ścieżki rozwiązania (zdefiniowana jako dysk + ścieżka + nazwa podstawowa + rozszerzenie pliku). Zdefiniowano tylko podczas kompilowania rozwiązania w środowisku IDE.
$(TargetDir) Katalog podstawowego pliku wyjściowego kompilacji (zdefiniowany jako dysk i ścieżka); zawiera ukośnik odwrotny (\).
$(TargetExt) Rozszerzenie pliku podstawowego pliku wyjściowego kompilacji. Zawiera on '.' przed rozszerzeniem pliku.
$(TargetFileName) Nazwa pliku podstawowego pliku wyjściowego kompilacji (zdefiniowana jako nazwa podstawowa + rozszerzenie pliku).
$(TargetName) Podstawowa nazwa podstawowego pliku wyjściowego kompilacji.
$(TargetPath) Bezwzględna nazwa ścieżki podstawowego pliku wyjściowego kompilacji (zdefiniowana jako dysk + ścieżka + nazwa podstawowa + rozszerzenie pliku).
$(VCInstallDir) Katalog zawierający zawartość języka C++ instalacji programu Visual Studio. Ta właściwość zawiera wersję docelowego zestawu narzędzi microsoft C++ (MSVC), który może się różnić od hosta programu Visual Studio. Na przykład podczas kompilowania za pomocą $(PlatformToolset) = v140$(VCInstallDir) polecenia element zawiera ścieżkę do instalacji programu Visual Studio 2015.
$(VSInstallDir) Katalog, w którym zainstalowano program Visual Studio. Ta właściwość zawiera wersję docelowego zestawu narzędzi programu Visual Studio, która może być inna niż host programu Visual Studio. Na przykład podczas kompilowania za pomocą $(PlatformToolset) = v110$(VSInstallDir) polecenia element zawiera ścieżkę do instalacji programu Visual Studio 2012.
$(WebDeployPath) Ścieżka względna z katalogu głównego wdrożenia internetowego do miejsca, w którym należą dane wyjściowe projektu.
$(WebDeployRoot) Ścieżka bezwzględna do lokalizacji <localhost>. Na przykład c:\inetpub\wwwroot.

Przestarzałe makra

System kompilacji dla języka C++ został znacząco zmieniony między programem Visual Studio 2008 a programem Visual Studio 2010. Wiele makr używanych we wcześniejszych typach projektów zostało zmienionych na nowe. Te makra nie są już używane lub są zastępowane przez co najmniej jedną równoważną wartość właściwości lub makra metadanych elementu (%(item-name)). Narzędzie do migracji może aktualizować makra oznaczone jako "zmigrowane". Jeśli projekt zawierający makro jest migrowany z programu Visual Studio 2008 lub starszego do programu Visual Studio 2010, program Visual Studio konwertuje makro na równoważne bieżące makro. Nowsze wersje programu Visual Studio nie mogą konwertować projektów z programu Visual Studio 2008 i starszych na nowy typ projektu. Te projekty należy przekonwertować w dwóch krokach; najpierw przekonwertuj je na program Visual Studio 2010, a następnie przekonwertuj wynik na nowszą wersję programu Visual Studio. Aby uzyskać więcej informacji, zobacz Omówienie potencjalnych problemów z uaktualnieniem.

Makro opis
$(InputDir) (Zmigrowane). Katalog pliku wejściowego (zdefiniowany jako dysk i ścieżka); zawiera ukośnik odwrotny (\). Jeśli projekt jest danymi wejściowymi, to makro jest równoważne .$(ProjectDir)
$(InputExt) (Zmigrowane). Rozszerzenie pliku wejściowego. Zawiera on '.' przed rozszerzeniem pliku. Jeśli projekt jest danymi wejściowymi, to makro jest równoważne .$(ProjectExt) W przypadku plików źródłowych jest to odpowiednik %(Extension).
$(InputFileName) (Zmigrowane). Nazwa pliku wejściowego (zdefiniowana jako nazwa podstawowa i rozszerzenie pliku). Jeśli projekt jest danymi wejściowymi, to makro jest równoważne .$(ProjectFileName) W przypadku plików źródłowych jest to odpowiednik %(Identity).
$(InputName) (Zmigrowane). Podstawowa nazwa pliku wejściowego. Jeśli projekt jest danymi wejściowymi, to makro jest równoważne .$(ProjectName) W przypadku plików źródłowych jest to odpowiednik %(Filename).
$(InputPath) (Zmigrowane). Bezwzględna nazwa ścieżki pliku wejściowego (zdefiniowana jako dysk + ścieżka + nazwa podstawowa + rozszerzenie pliku). Jeśli projekt jest danymi wejściowymi, to makro jest równoważne .$(ProjectPath) W przypadku plików źródłowych jest to odpowiednik %(FullPath).
$(ParentName) Nazwa elementu zawierającego ten element projektu. To makro jest nazwą folderu nadrzędnego lub nazwą projektu.
$(SafeInputName) Nazwa pliku jako prawidłowa nazwa klasy, minus rozszerzenie pliku. Ta właściwość nie ma dokładnego odpowiednika.
$(SafeParentName) Nazwa najbliższego elementu nadrzędnego w prawidłowym formacie nazwy. Na przykład formularz jest elementem nadrzędnym .resx pliku. Ta właściwość nie ma dokładnego odpowiednika.
$(SafeRootNamespace) Nazwa przestrzeni nazw, w której kreatorzy projektu powinni dodać kod. Ta nazwa przestrzeni nazw zawiera tylko znaki, które byłyby dozwolone w prawidłowym identyfikatorze języka C++. Ta właściwość nie ma dokładnego odpowiednika.

Zobacz też

Projekty programu Visual Studio — C++
Przewodnik przenoszenia i uaktualniania języka Visual C++
Omówienie potencjalnych problemów z uaktualnieniem
Metadane dobrze znanego elementu programu MSBuild