Partilhar via


Aviso NuGet NU5127

Este pacote não contém uma pasta lib/ ou ref/ e, portanto, será tratado como compatível para todos os frameworks. Como os arquivos específicos da estrutura foram encontrados no diretório build/ para net45, netstandard2.0, considere criar os seguintes arquivos vazios para restringir corretamente a compatibilidade do pacote:
-lib/net45/.
-lib/netstandard2.0/.

Questão

Projetos usando pacotes com PackageReference apenas uso lib/ e ref/ assemblies para determinar a compatibilidade de pacotes. Portanto, um pacote sem nenhum lib/ ou ref/ arquivos será considerado compatível com todos os projetos. No entanto, pacotes contendo props ou destinos do MSBuild que são específicos para uma ou mais estruturas de destino mostram intenção em ser compatíveis apenas com essas estruturas de destino.

Por exemplo, considere que um pacote PackageA contém um único arquivo, build/net8.0/PackageA.targets. Se esse pacote for referenciado por um direcionamento de projeto net48 (.NET Framework, Versão 4.8), o NuGet não emitirá nenhum aviso ou erro, mas também não selecionará nenhum ativo do pacote. Portanto, o consumidor do pacote não será notificado de que o pacote não funciona corretamente com seu projeto.

Solução

Como a mensagem de aviso sugere, crie um arquivo vazio nomeado _._ na pasta lib para os TFMs listados. Isso permitirá que o NuGet falhe na restauração de PackageReference projetos quando o projeto for incompatível com o pacote.

Se o seu pacote se destinar a ser compatível com todas as estruturas de destino, mas só entrar em vigor para determinadas estruturas de destino, crie um arquivo build/{PackageId}.props cujo conteúdo seja <Project />.