Compartilhar via


Personalize sua compilação local

Quando você trabalha com código compartilhado em um repositório de código como o GitHub, no controle do código-fonte ou com qualquer base de código compartilhada, você pode usar o MSBuild para personalizar temporariamente builds em seu computador local. Talvez você queira reproduzir temporariamente um bug ou testar uma configuração diferente e manter essas personalizações separadas dos arquivos no repositório de código compartilhado. Este artigo descreve algumas extensões de build disponíveis no MSBuild que permitem criar configurações de build personalizadas, específicas para o usuário ou apenas locais.

Pré-requisitos

  • Um projeto do Visual Studio criado com o MSBuild.

Usar o arquivo de usuário

Você pode usar $(MSBuildProjectFullPath).user, também chamado de arquivo de usuário neste contexto, para armazenar extensões, opções ou variáveis específicas para seu computador local. O arquivo de usuário não é destinado a ser enviado para controle de origem e é automaticamente verificado .gitignore. Para alterações mais abrangentes, altere o projeto em si, para que os futuros mantenedores não precisem saber sobre esse mecanismo de extensão.

Em projetos multitarefas com suporte, o arquivo de usuário é importado automaticamente em builds internos e builds externos, para que você possa criar esse arquivo dentro da solução. Se você estiver trabalhando em outro tipo de build, poderá usar o arquivo de usuário criando-o em sua solução e importando-o em seu arquivo de projeto, da seguinte maneira:

<Import Project="$(MSBuildProjectFullPath).user" Condition="Exists('$(MSBuildProjectFullPath).user')"/>

Usar MSBuildExtensionsPath e MSBuildUserExtensionsPath

Por convenção, muitos arquivos lógicos de build principais importam o $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\TargetFileName\ImportBefore\*.targets arquivo antes de seu conteúdo e o $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\TargetFileName\ImportAfter\*.targets arquivo posteriormente. Essa convenção permite que os SDKs instalados aumentem a lógica de build de tipos de projeto comuns.

A mesma estrutura de diretório é pesquisada em $(MSBuildUserExtensionsPath), que é a pasta por usuário %LOCALAPPDATA%\Microsoft\MSBuild. Os arquivos colocados nessa pasta são importados para todos os builds do tipo de projeto correspondente executados sob as credenciais desse usuário.

Você pode desabilitar as extensões de usuário definindo as propriedades nomeadas após o arquivo de importação, no padrão ImportUserLocationsByWildcardBefore\<ImportingFileNameWithNoDots>. Por exemplo, definir ImportUserLocationsByWildcardBeforeMicrosoftCommonProps como false impede a importação de $(MSBuildUserExtensionsPath\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportBefore\*.

Criar condições personalizadas com base no idioma do projeto

Se você precisar de comportamentos diferentes dependendo da linguagem .NET: C#, Visual Basic ou F#, poderá adicionar grupos de propriedades com condições que dependem da extensão <MSBuildProjectExtension> do arquivo de projeto para definir propriedades específicas do idioma e seus valores.

<PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.vbproj'">
   <!-- Put VB-only property definitions here -->
</PropertyGroup>
<PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.fsproj'">
   <!-- Put F#-only property definitions here -->
</PropertyGroup>
<PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.csproj'">
   <!-- Put C#-only property definitions here -->
</PropertyGroup>