Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Quando o MSBuild cria um arquivo de solução, ele primeiro converte o arquivo internamente em um arquivo de projeto e, em seguida, cria esse arquivo de projeto. O arquivo de projeto gerado pode importar um antes.<solutionname>.sln.targets antes de definir quaisquer destinos, e importar depois.<solutionname>.sln.targets após importar os destinos.
Os alvos antes e depois são instalados nos diretórios $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile\ImportBefore e $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile\ImportAfter.
Portanto, por exemplo, você pode definir um novo alvo para gravar uma mensagem de log personalizada após a compilação de MyCustomizedSolution.sln, criando o arquivo a seguir com o nome after.MyCustomizedSolution.sln.targets no mesmo diretório.
<Project>
<Target Name="EmitCustomMessage" AfterTargets="Build">
<Message Importance="High" Text="The solution has completed the Build target" />
</Target>
</Project>
O build da solução é separado dos builds do projeto, para que essas configurações não afetem os builds do projeto.
Importante
A personalização da solução feita dessa forma aplica-se somente a builds de linha de comando usando MSBuild.exe ou dotnet build, e não se aplica a builds dentro do Visual Studio. Portanto, é melhor não colocar a personalização no nível da solução. Uma alternativa melhor para personalizar todos os projetos em uma solução é usar arquivos Directory.Build.props e Directory.Build.targets na pasta da solução.
Gravar na $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile pasta geralmente requer permissões elevadas. Se você tiver muitos arquivos de solução para estender da mesma maneira, mas não quiser gravar na pasta SolutionFile , poderá criar os arquivos Directory.Solution.props e Directory.Solution.targets e colocá-los no caminho raiz acima dos arquivos de solução que você deseja estender.
Directory.Solution.props é importado no início do build da solução e Directory.Solution.targets é importado no final do build da solução.
Quando você cria um arquivo de solução, Directory.Build.props e Directory.Build.targets não são importados , portanto, você deve usar Directory.Solution.props e Directory.Solution.targets . Os dois tipos de arquivos não se importam implicitamente.
Quando você tiver arquivos Directory.Solution.props ou Directory.Solution.targets em uma pasta raiz, mas não quiser que uma solução nessa pasta importe esses arquivos, você pode usar os dados anteriores da solução .<arquivo solutionname>.sln.targets para definir as propriedades ImportDirectorySolutionProps e ImportDirectorySolutionTargets para false.
Ou você pode usar as propriedades $(DirectorySolutionPropsPath) e $(DirectorySolutionTargetsPath) para especificar um local diferente para esses arquivos. Essa abordagem pode ser útil se subconjuntos de suas soluções exigirem determinados valores de propriedade ou destinos em comum.
Observação
A construção da solução é suportada com o formato de arquivo de solução .slnx no MSBuild 17.12 e versões posteriores. Tanto antes.<solutionname>.slnx.targets quanto antes.<solutionname>.sln.targets, juntamente com os arquivos posteriores correspondentes, funcionam com o MSBuild 17.14 e posterior.
Para obter mais informações sobre opções de personalização de build, consulte Personalizar seu build.