Cómo agregar dependencias de paquetes solo de origen de NuGet

Nov 28 2020

Tengo un marco que he creado para ser utilizado con los complementos CRM / XRM / CDS / PowerPlatform / DataVerse de Microsoft. Estos complementos no pueden contener dependencias de archivos DLL externos que no sean de Net Framwork ni de MicrosoftSDK. En lugar de las dependencias de ILMerging, he hecho uso de los paquetes de código fuente de NuGet que permiten que los archivos de origen se compartan a través de NuGet, eliminando la necesidad de hacer referencia e ILMerging de otras dlls.

Estoy intentando hacer que estos paquetes NuGet sean compatibles con dotnetcore. Hay dos paquetes nuget DLaB.Xrm.Source y DLaB.Common.Source. DLaB.Xrm.Source depende de DLaB.Common.Source. Pude actualizar con éxito el paquete Nuget para el paquete común para dotnetcore, y todo se ve muy bien. Luego actualicé el paquete Xrm para dotnetcore, pero cuando probé instalar solo el paquete DLaB.Xrm.Source, no parece haber agregado el paquete DLaB.Common.Source, ya que ahora recibo errores de compilación para los que faltan archivos, aunque aparece como una dependencia:

¿Me estoy perdiendo de algo? ¿Existe una metodología para que esto funcione, o debería apuntar y simplemente incluir los archivos DLaB.Common.Source en los archivos DLaB.Xrm.Source directamente?

Así es como tengo las dependencias enumeradas en mi archivo 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>

Respuestas

Daryl Nov 30 2020 at 20:07

Parece que esto es un diseño de NuGet. De acuerdo a esto:

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

Los archivos de contenido están excluidos, por lo que probablemente tendré que incluir los archivos fuente de la dependencia en el padre.

para excluir:

Una lista delimitada por comas de etiquetas de inclusión / exclusión (ver más abajo) que indica la dependencia para excluir en el paquete final. El valor predeterminado es compilación, analizadores que se pueden sobrescribir. Pero el contenido / ContentFiles también se excluyen implícitamente en el paquete final que no se puede sobrescribir . Las etiquetas especificadas con excluir tienen prioridad sobre las especificadas con incluir. Por ejemplo, include = "runtime, compile" exclude = "compile" es lo mismo que include = "runtime".