Ответ 1
В команде Install-Package есть флаг для игнорирования зависимостей. Пример:
Install-Package Common.Infrastructure -IgnoreDependencies
Я уверен, что многие из нас столкнулись с этой проблемой, и почему-то у меня проблемы с разрешением в любом месте.
У меня есть общая библиотека (Common.Infrastructure.dll) для многих проектов, и я использую TeamCity, встроенную в NuGet Server, для размещения этой библиотеки. Эта библиотека внутренне полагается на пакеты NuGet, такие как Fluent Nhibernate, Log4net, StructureMap и т.д.).
Проще говоря, выполнение "Install-Package Common.Infrastructure" в проекте, который нуждается в этой общей зависимости, также добавляет Fluent NHibernate, log4net, SM и т.д.) в качестве "ссылок" на проект. Я не буду использовать эти зависимости Common.Infrastructure напрямую, но, очевидно, им понадобится в папке вывода (bin/debug).
Есть ли способ не иметь этих зависимостей, на которые ссылается встроенная поддержка nuget (nuspec)?
В команде Install-Package есть флаг для игнорирования зависимостей. Пример:
Install-Package Common.Infrastructure -IgnoreDependencies
Обратите внимание, что его фактический вопрос заключается в том, как создать пакет, который не добавляет зависимости, а не как установить пакет без его зависимостей.
Используя Nuspec, вы можете явно контролировать, какие пакеты являются зависимостями и какие сборки в вашем пакете ссылаются на целевой проект. Тем не менее, я не думаю, что есть способ сделать именно то, что вы спрашиваете с помощью NuGet, потому что нет способа указать Visual Studio, что сборка должна быть скопирована в каталог bin без добавления ее в качестве ссылки на проект.
Я думаю, что ваша проблема скорее является симптомом слишком большой функциональности в одной сборке. Я рекомендую вам разделить Common.Infrastructure.dll на отдельные сборки для различных аспектов функциональности. Что-то вроде:
Конечно, точный набор сборок, в котором вы его разбиваете, будет зависеть от того, какая функциональность находится в Common.Infrastructure.dll и как вы его используете. После того, как у вас есть отдельные пакеты для каждой из этих сборок, вы можете выбрать, какие из них будут ссылаться в данном проекте, и ограничить его теми аспектами и зависимостями, которые вам действительно нужны.
На этом есть решение.
Отредактируйте свой файл nuspec и добавьте ссылочную dll только то, что вы хотите. Рекомендации reference file = "dllwhichyouwantToreference.dll" ссылки