Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 as compilações em sua máquina 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 compilação disponíveis no MSBuild que permitem que você faça configurações de compilação personalizadas específicas do usuário ou somente local.
Pré-requisitos
- Um projeto do Visual Studio que compila com o MSBuild.
Usar o ficheiro do utilizador
Você pode usar $(MSBuildProjectFullPath).user, também chamado de arquivo do utilizador neste contexto, para armazenar extensões, opções ou variáveis específicas da sua máquina local. O arquivo do usuário não se destina a ser carregado para o controle do código-fonte e é verificado automaticamente no .gitignore. Para mudanças mais extensas, altere o projeto em si, para que os futuros mantenedores não precisem saber sobre esse mecanismo de extensão.
Em projetos multidestinados suportados, o arquivo do usuário é automaticamente importado em builds internas e externas, permitindo que você crie esse arquivo dentro da solução. Se você estiver trabalhando em outro tipo de compilação, poderá usar o arquivo de usuário criando-o em sua solução e, em seguida, 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 construção principais importam o arquivo $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\TargetFileName\ImportBefore\*.targets antes do seu conteúdo, e o arquivo $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\TargetFileName\ImportAfter\*.targets depois. Essa convenção permite que SDKs instalados aumentem a lógica de compilação de tipos de projeto comuns.
A mesma estrutura de diretórios é pesquisada no $(MSBuildUserExtensionsPath), que é a pasta por usuário %LOCALAPPDATA%\Microsoft\MSBuild. Os arquivos colocados nessa pasta são importados para todas as compilações do tipo de projeto correspondente executadas sob as credenciais desse usuário.
Você pode desabilitar as extensões de usuário definindo propriedades com o nome do arquivo de importação, no padrão ImportUserLocationsByWildcardBefore\<ImportingFileNameWithNoDots>. Por exemplo, configurar ImportUserLocationsByWildcardBeforeMicrosoftCommonProps como false impede a importação de $(MSBuildUserExtensionsPath\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportBefore\*.
Criar condições personalizadas com base na linguagem do projeto
Se precisar de comportamentos diferentes dependendo da linguagem .NET - C#, Visual Basic ou F# - poderá adicionar grupos de propriedades com condições relacionadas à extensão do arquivo de projeto na tag <MSBuildProjectExtension> para definir propriedades específicas da linguagem 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>