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 o MSBuild cria um arquivo de solução, ele primeiro traduz o arquivo internamente em um arquivo de projeto e, em seguida, cria esse arquivo de projeto. O ficheiro de projeto gerado pode importar um antes.<solutionname>.sln.targets antes de definir quaisquer alvos, e importar depois.<solutionname>.sln.targets após importar os alvos.
Os ficheiros antes e depois são instalados nos diretórios $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile\ImportBefore e $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile\ImportAfter.
Assim, por exemplo, pode-se definir um novo destino para escrever uma mensagem de log personalizada após a construção de MyCustomizedSolution.sln, criando o seguinte arquivo chamado 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>
A compilação da solução é separada das compilações do projeto, portanto, essas configurações não afetam as compilações do projeto.
Importante
A personalização das compilações de solução dessa maneira se aplica somente a compilações de linha de comando usando MSBuild.exe ou dotnet build, e não se aplica a compilações 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 os 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 deseja estender.
Directory.Solution.props é importado no início da compilação da solução e Directory.Solution.targets é importado no final da compilação 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 em vez disso. Os dois tipos de ficheiros não se importam implicitamente um ao outro.
Quando você tem arquivos Directory.Solution.props ou Directory.Solution.targets em uma pasta raiz, mas não deseja que uma solução nessa pasta importe esses arquivos, você pode usar a solução antes.<SolutionName>.sln.targets para definir as propriedades ImportDirectorySolutionProps e ImportDirectorySolutionTargets para false.
Ou, você pode usar as $(DirectorySolutionPropsPath) propriedades 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 no formato de arquivo solução .slnx no MSBuild 17.12 e em versões posteriores. Tanto o antes.<solutionname.slnx.targets> como o antes.<solutionname>.sln.targets, e os ficheiros após correspondentes, funcionam com o MSBuild 17.14 e versões posteriores.
Para obter mais informações sobre opções de personalização de compilação, consulte Personalizar sua compilação.