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.
Além dos assemblies mais tradicionais, os pacotes NuGet às vezes podem adicionar alvos de build personalizados ou propriedades a projetos que consomem o pacote.
Isso pode ser feito adicionando um arquivo MSBuild válido, no formulário <package_id>.targets ou <package_id>.props (como Contoso.Utility.UsefulStuff.targets) dentro das pastas de build do projeto.
Compilar pastas
À medida que o NuGet evoluiu, várias pastas diferentes para compilação .props e .targets foram adicionadas.
| Pasta | Versão do NuGet | Utilização |
|---|---|---|
| build | 2.5+ | Criar lógica para cada estrutura de um projeto. |
| buildMultiTargeting | 4.0+ | Criar lógica para o outer build em projetos que visam múltiplos frameworks. Somente PackageReference. |
| buildTransitive | 5.0+ | Criar lógica para recursos que fluem transitivamente para qualquer projeto consumidor. Veja a página de recurso. Somente PackageReference. |
Pasta de build específica do framework
Todas as três pastas de build seguem o mesmo padrão para decidir o arquivo mais adequado com base na estrutura de destino do projeto.
Arquivos na pasta raiz de build build/<package_id>.targets e build/<package_id>.props são considerados adequados para todos os frameworks de destino.
Para fornecer arquivos específicos da estrutura, primeiro coloque-os em subpastas apropriadas, como o seguinte:
\build
\netstandard1.4
\Contoso.Utility.UsefulStuff.props
\Contoso.Utility.UsefulStuff.targets
\net462
\Contoso.Utility.UsefulStuff.props
\Contoso.Utility.UsefulStuff.targets
Prefira usar pastas de compilação específicas do framework sempre que apropriado para evitar falsos positivos de instalação em projetos que não são suportados pelo seu pacote.
Observe que, se um pacote não tiver arquivos nas lib pastas ou ref pastas e somente arquivos em uma pasta de build específica da estrutura, esse pacote será considerado compatível com todos os projetos. Versões atualizadas das ferramentas do pacote geram o aviso NU5127 quando esses pacotes são criados.
Projetos que consomem pacotes com arquivos de build
Projetos PackageReference
.props e .targets não são adicionados ao arquivo de projeto, mas, em vez disso, são disponibilizados por meio {projectName}.nuget.g.targets e {projectName}.nuget.g.props. Esses arquivos são gerados automaticamente quando a restauração é executada.
Quando um projeto destina-se a mais de uma estrutura, as importações para esses arquivos são condicionadas no nome da estrutura de destino.
O MSBuild .props e .targets arquivos para direcionamento de múltiplos frameworks podem ser colocados na pasta \buildMultiTargeting.
Quando as importações são geradas, uma condição em que a propriedade $(TargetFramework) MSBuild está vazia é definida.
projetos relacionados ao packages.config
Quando o NuGet instala um pacote com arquivos \build, ele adiciona elementos MSBuild <Import> no arquivo de projeto apontando para .targets e .props arquivos. (.props é adicionado na parte superior do arquivo de projeto; .targets é adicionado na parte inferior.) Um elemento MSBuild <Import> condicional separado é adicionado para cada estrutura de destino.
Criando pacotes com propriedades e alvos do MSBuild
Você pode usar qualquer uma das ferramentas a seguir para incluir o MSBuild .props e .targets em seu pacote.
Orientações para o conteúdo de props e alvos do MSBuild
O NuGet não limita como você cria .props e .targets , como eles variam de acordo com a necessidade do autor do pacote e dos próprios projetos de destino.
Há algumas coisas que não devem ser feitas em pacotes .props e .targets, por exemplo, não especificar propriedades e itens que afetam a restauração, pois elas serão excluídas automaticamente.
Alguns exemplos de propriedades que não devem ser adicionadas ou atualizadas: TargetFramework, TargetFrameworkMoniker, TargetPlatformMoniker, AssetTargetFallback etc.
Alguns exemplos de itens que não devem ser adicionados ou atualizados: PackageReference, PackageVersion, PackageDownload etc.