Macros comuns para comandos e propriedades de MSBuild

Dependendo das opções de instalação, o Visual Studio pode disponibilizar centenas de macros para você em um projeto do Visual Studio .vcxproj baseado em MSBuild. As macros correspondem às propriedades do MSBuild definidas por padrão, em arquivos .props ou .targets ou nas configurações de projeto. Use essas macros em qualquer lugar na caixa de diálogo Páginas de Propriedades de um projeto no qual cadeias de caracteres são aceitas. Essas macros não diferenciam maiúsculas de minúsculas.

Exibir as macros e as propriedades atuais

Para exibir todas as macros disponíveis no momento, abra as páginas de propriedades do projeto no menu principal selecionando Propriedades do projeto>. Na caixa de diálogo Páginas de Propriedades , escolha uma entrada que tenha uma macro. Você pode reconhecer uma macro pelo cifrão e parênteses que cercam seu nome.

Por exemplo, no painel esquerdo, selecione Propriedades de configuração>Diretórios VC++ e, no painel direito, selecione Incluir diretórios. O valor dos diretórios Include é $(VC_IncludePath);$(WindowsSDK_IncludePath);.

O cifrão e o parêntese em torno desses dois valores indicam que eles são macros. A expansão dessas duas macros define os diretórios de inclusão a serem pesquisados.

Selecione Incluir diretórios e uma lista suspensa será exibida no final da linha. Selecione o botão suspenso e selecione Editar. Na caixa de diálogo Incluir diretórios exibida, selecione o botão Macros>>.

Isso expande a caixa de diálogo para mostrar o conjunto atual de propriedades e macros visíveis para o Visual Studio, juntamente com o valor atual de cada uma. Para obter mais informações, confira a seção Especificando valores definidos pelo usuário da referência da página de propriedades do projeto C++.

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

À direita está uma lista de macros do Visual Studio, como $(AllowLocalNetworkLoopback). O painel esquerdo mostra o valor avaliado da propriedade de diretório include. O painel inferior mostra quais macros foram expandidas, se houver, para produzir o valor da propriedade de diretório de inclusão. Como a macro Incluir Diretórios é uma combinação de duas outras macros, $(VC_IncludePath) e $(WindowsSDK_IncludePath), o painel inferior, rotulado Valores herdados, lista essas duas macros.

Lista de macros comuns

Esta tabela descreve um subconjunto comumente usado das macros disponíveis; há muitos mais não listados aqui. Vá para a caixa de diálogo Macros para ver todas as propriedades e seus valores atuais em seu projeto. Para obter detalhes sobre como as definições de propriedade do MSBuild são criadas e usadas como macros em arquivos ..props, .targets e .vcxproj, consulte Propriedades do MSBuild.

Macro Descrição
$(Configuration) O nome da configuração do projeto atual, por exemplo, “Depurar”.
$(DevEnvDir) O diretório de instalação do Visual Studio (definido como unidade + caminho); inclui a barra invertida à direita (\).
$(FrameworkDir) O diretório no qual o .NET Framework foi instalado.
$(FrameworkSDKDir) O diretório no qual você instalou o .NET Framework. O .NET Framework pode ter sido instalado como parte do Visual Studio ou separadamente.
$(FrameworkVersion) A versão do .NET Framework usada pelo Visual Studio. Combinado com $(FrameworkDir), o caminho completo para a versão do uso do .NET Framework pelo Visual Studio.
$(FxCopDir) O caminho para o arquivo fxcop.cmd. O arquivo fxcop.cmd não está instalado em todas as edições do Visual Studio.
$(IntDir) Caminho para o diretório especificado para arquivos intermediários. Se esse for um caminho relativo, os arquivos intermediários acessarão esse caminho acrescentado ao diretório do projeto. Esse caminho deve ter uma barra invertida à direita (\). Ele resolve para o valor da propriedade Diretório intermediário. Não use $(OutDir) para definir essa propriedade.
$(OutDir) Caminho para o diretório de arquivo de saída. Se esse for um caminho relativo, os arquivos de saída acessarão esse caminho acrescentado ao diretório do projeto. Esse caminho deve ter uma barra invertida à direita (\). Ele resolve para o valor da propriedade Diretório de saída. Não use $(IntDir) para definir essa propriedade.
$(Platform) O nome da plataforma do projeto atual, por exemplo, "Win32".
$(PlatformShortName) O nome curto da arquitetura atual, por exemplo, "x86" ou "x64".
$(ProjectDir) O diretório do projeto (definido como unidade + caminho); inclui a barra invertida à direita (\).
$(ProjectExt) A extensão de arquivo do projeto. Inclui o “.” antes da extensão de arquivo.
$(ProjectFileName) O nome de arquivo do projeto (definido como nome base + extensão de arquivo).
$(ProjectName) O nome de base do projeto.
$(ProjectPath) O nome de caminho absoluto do projeto (definido como unidade + caminho + nome base + extensão de arquivo).
$(PublishDir) O local de saída para o destino de publicação; inclui a barra invertida à direita (\). O padrão é a pasta $(OutDir)app.publish\.
$(RemoteMachine) Definido como o valor da propriedade Computador Remoto na página de propriedades de Depuração. Para obter mais informações, consulte Alterando as configurações do projeto para uma configuração de depuração do C/C++.
$(RootNameSpace) O namespace, se houver, que contém o aplicativo.
$(SolutionDir) O diretório da solução (definido como unidade + caminho); inclui a barra invertida à direita (\). Definido somente durante o build de uma solução no IDE.
$(SolutionExt) A extensão de arquivo da solução. Inclui o “.” antes da extensão de arquivo. Definido somente durante o build de uma solução no IDE.
$(SolutionFileName) O nome de arquivo da solução (definido como nome base + extensão de arquivo). Definido somente durante o build de uma solução no IDE.
$(SolutionName) O nome de base da solução. Definido somente durante o build de uma solução no IDE.
$(SolutionPath) O nome de caminho absoluto da solução (definido como unidade + caminho + nome base + extensão de arquivo). Definido somente durante o build de uma solução no IDE.
$(TargetDir) O diretório do arquivo de saída primário para a compilação (definido como unidade + caminho); inclui a barra invertida à direita (\).
$(TargetExt) A extensão de arquivo do arquivo de saída primária para o build. Inclui o “.” antes da extensão de arquivo.
$(TargetFileName) O nome do arquivo de saída primária do build (definido como nome base + extensão de arquivo).
$(TargetName) O nome base do arquivo de saída primária para o build.
$(TargetPath) O nome de caminho absoluto do arquivo de saída primária do build (definido como unidade + caminho + nome base + extensão de arquivo).
$(VCInstallDir) O diretório que contém o conteúdo do C++ da instalação do Visual Studio. Essa propriedade contém a versão do conjunto de ferramentas do Microsoft C++ de destino (MSVC), que pode ser diferente do Visual Studio de host. Por exemplo, ao compilar com $(PlatformToolset) = v140, $(VCInstallDir) contém o caminho para a instalação do Visual Studio 2015.
$(VSInstallDir) O diretório no qual você instalou o Visual Studio. Essa propriedade contém a versão do conjunto de ferramentas do Visual Studio de destino, que pode ser diferente do Visual Studio de host. Por exemplo, ao compilar com $(PlatformToolset) = v110, $(VSInstallDir) contém o caminho para a instalação do Visual Studio 2012.
$(WebDeployPath) O caminho relativo da raiz de implantação da Web ao qual as saídas do projeto pertencem.
$(WebDeployRoot) O caminho absoluto para o local de <localhost>. Por exemplo, c:\inetpub\wwwroot.

Macros obsoletas

O sistema de build para o C++ foi alterado de maneira considerável entre o Visual Studio 2008 e o Visual Studio 2010. Muitas macros usadas em tipos de projeto anteriores foram alteradas para novas. Essas macros não são mais usadas ou são substituídas por uma ou mais propriedades equivalentes ou valores de macro (%(item-name)) de metadados de item. A ferramenta de migração pode atualizar macros marcadas como "migradas". Se um projeto que contém a macro for migrado do Visual Studio 2008 ou anterior para o Visual Studio 2010, o Visual Studio converterá a macro na macro atual equivalente. As versões posteriores do Visual Studio não podem converter projetos do Visual Studio 2008 e anterior para o novo tipo de projeto. É necessário converter esses projetos em duas etapas; primeiro convertê-los no Visual Studio 2010 e, em seguida, converter o resultado para a versão mais recente do Visual Studio. Para obter mais informações, consulte Visão geral de possíveis problemas de atualização.

Macro Descrição
$(InputDir) (Migrado.) O diretório do arquivo de entrada (definido como unidade + caminho); inclui a barra invertida à direita (\). Se o projeto é a entrada, essa macro é equivalente a $(ProjectDir).
$(InputExt) (MIgrado.) A extensão do arquivo de entrada. Inclui o “.” antes da extensão de arquivo. Se o projeto é a entrada, essa macro é equivalente a $(ProjectExt). Para arquivos de origem, é equivalente a %(Extension).
$(InputFileName) (Migrado.) O nome do arquivo de entrada (definido como nome base + extensão de arquivo). Se o projeto é a entrada, essa macro é equivalente a $(ProjectFileName). Para arquivos de origem, é equivalente a %(Identity).
$(InputName) (Migrado.) O nome base do arquivo de entrada. Se o projeto é a entrada, essa macro é equivalente a $(ProjectName). Para arquivos de origem, é equivalente a %(Filename).
$(InputPath) (Migrado.) O nome de caminho absoluto do arquivo de entrada (definido como unidade + caminho + nome base + extensão de arquivo). Se o projeto é a entrada, essa macro é equivalente a $(ProjectPath). Para arquivos de origem, é equivalente a %(FullPath).
$(ParentName) Nome do item que contém esse item de projeto. Essa macro é o nome da pasta pai, ou o nome do projeto.
$(SafeInputName) O nome do arquivo como um nome de classe válido, menos a extensão de arquivo. Essa propriedade não tem uma equivalência exata.
$(SafeParentName) O nome do pai imediato em um formato de nome válido. Por exemplo, um formulário é o pai de um arquivo .resx. Essa propriedade não tem uma equivalência exata.
$(SafeRootNamespace) O nome do namespace onde os assistentes de projeto devem adicionar código. Esse nome de namespace contém somente os caracteres permitidos em um identificador válido do C++. Essa propriedade não tem uma equivalência exata.

Confira também

Projetos do Visual Studio – C++
Guia de atualização e portabilidade do Visual C++
Visão geral de possíveis problemas de atualização
Metadados de itens conhecidos do MSBuild