Como adicionar dependências de pacote somente para fonte NuGet

Nov 28 2020

Eu tenho uma estrutura que criei para ser usada com os plug-ins CRM / XRM / CDS / PowerPlatform / DataVerse da Microsoft. Esses plug-ins não podem conter quaisquer dependências em dlls não-.NET Framwork não-MicrosoftSDK externas. Em vez de depender de ILMerging, usei os pacotes somente de código-fonte do NuGet que permitem que os próprios arquivos de origem sejam compartilhados por meio do NuGet, eliminando a necessidade de referenciar e ILMerging outras dlls.

Estou tentando tornar esses pacotes NuGet compatíveis com dotnetcore. Existem dois pacotes nuget DLaB.Xrm.Source e DLaB.Common.Source. DLaB.Xrm.Source depende de DLaB.Common.Source. Consegui atualizar com sucesso o pacote Nuget para o pacote comum para dotnetcore, e tudo parece ótimo. Em seguida, atualizei o pacote Xrm para dotnetcore, mas quando testei a instalação apenas do pacote DLaB.Xrm.Source, não parece ter adicionado o pacote DLaB.Common.Source, pois agora estou recebendo erros de compilação para aqueles que faltam arquivos, mesmo que seja listado como uma dependência:

Estou esquecendo de algo? Existe uma metodologia para fazer isso funcionar, ou devo punt e apenas incluir os arquivos DLaB.Common.Source diretamente nos arquivos DLaB.Xrm.Source?

É assim que tenho as dependências listadas no meu arquivo NuSpec:

<dependencies>
  <group targetFramework="net">
    <dependency id="DLaB.Common.Source" version="1.2.0.10" />
  </group>
  <group targetFramework="netcoreapp">
    <dependency id="DLaB.Common.Source" version="1.2.0.10" />
  </group>
</dependencies>

Respostas

Daryl Nov 30 2020 at 20:07

Parece que isso foi projetado para o NuGet. De acordo com isso:

https://docs.microsoft.com/en-us/nuget/reference/nuspec#dependencies-element

Arquivos de conteúdo são excluídos, então provavelmente terei que incluir os arquivos de origem da dependência no pai.

para Excluir:

Uma lista delimitada por vírgulas de tags de inclusão / exclusão (veja abaixo) indicando a dependência a ser excluída no pacote final. O valor padrão é build, analisadores que podem ser sobrescritos. Mas content / ContentFiles também são excluídos implicitamente no pacote final, que não pode ser sobrescrito . As marcas especificadas com exclude têm precedência sobre as especificadas com include. Por exemplo, include = "runtime, compile" exclude = "compile" é o mesmo que include = "runtime".