Я только начинаю работать с Nuget и перемещаю большую часть внутрикомандных и межведомственных ссылок моей команды в пакеты в частном фиде Nuget. Однако я наблюдаю, что, когда у моих пакетов есть свои собственные зависимости, эти вторичные зависимости добавляются в мои проекты в качестве ссылок, как если бы проекты использовали их напрямую.
Это работает с точки зрения сборки и выпуска, поскольку зависимости упаковываются правильно, но для более крупных проектов список ссылок становится довольно раздутым по сравнению со сборками, на которые фактически ссылается код. При гипотетической очистке кажется, что было бы сложно определить, какие сборки были этим типом вторичной зависимости, а какие просто больше не использовались.
Это просто неудачное последствие работы Nuget? Есть ли другой способ использования Nuget, который не приводит к появлению этих шумных ссылок?
Например: у меня есть проект MyProject, который напрямую использует сборку DependencyA. DependencyA ссылается на сборку LibraryX, и поэтому LibraryX требуется во время выполнения для MyProject, даже если MyProject не использует ее напрямую. В качестве примера предположим, что LibraryX достаточно отличается, чтобы быть отдельным пакетом.
В этом сценарии, до Nuget, сборки будут жить в системе управления версиями и могут быть упакованы во время сборки / публиковать / развертывать без ссылки на сборку в MSBuild. В этом случае MyProject имеет ссылку сборки MSBuild на DependencyA, но не на LibraryX.
Однако после перехода на Nuget и использования этих зависимостей через пакеты, nuspe c для DependencyA выражает зависимость от LibraryX:
<package >
<metadata>
<id>DependencyA</id>
<version>1.0.0</version>
<authors>Initech</authors>
<owners>Initech</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<license type="expression">MIT</license>
<description>A Dependency</description>
<tags>Dependency A</tags>
<dependencies>
<group targetFramework="net40" >
<dependency id="LibraryX" version="1.0.0" />
</group>
</dependencies>
</metadata>
</package>
При установке пакета DependencyA на MyPrject, Nuget добавляет ссылку на сборку MSBuild для LibraryX в MyProject, хотя MyProject на самом деле не ссылается напрямую на LibraryX.