Как скрыть или ограничить пользователя в загрузке только зависимого пакета из nuget? - PullRequest
1 голос
/ 19 апреля 2019

Проблема: У меня есть Project_A и Project_B.Project_B зависит от Project_A.Зависит от зависимости Project_B, добавив Project_A в качестве ссылки на пакет nuget (Project_A опубликован как пакет nuget и включен в Project_B) .Наконец Project_B упаковывается как ссылка на nuget для конечных пользователей.Когда они загружают Project_B, который зависит от Project_A, конечный пользователь видит пакет nuget Project_A в проводнике пакетов nuget.

Цель:

  1. Можно ли скрыть пакет Nuget Project_Aиз проводника пакетов nuget?потому что, если конечный пользователь загрузит это, тогда бесполезно, но публиковать как зависимость для пакета nuget Project_B.
  2. Можно ли как-то ограничить конечного пользователя, как загружать ссылку Project_A?

Ожидаетсярезультат: Мое конечное использование должно иметь возможность загружать только ссылку Project_B, но не ссылку Project_A по отдельности.Ссылка Project_A должна автоматически загружаться как зависимость для Project_B.

Фактический результат: Моим конечным пользователям не нужно загружать ссылку на пакет Project_A nuget в свой проект.

1 Ответ

2 голосов
/ 19 апреля 2019

Тот факт, что два пакета NuGet создаются из проектов, на самом деле не имеет значения.В итоге у вас есть два пакета: Project_A и Project_B, а Project_B зависит от Project_A.

Могу ли я скрыть пакет Project_A nuget из проводника пакетов nuget?

nuget.В org есть концепция незарегистрированных пакетов, поэтому пользователи не увидят их в результатах поиска.Но если вы публикуете свои пакеты в другом фиде NuGet, это зависит от реализации сервера.Тем не менее, будьте осторожны, так как это может привести к плохой работе пользователей, если это вызовет проблемы с восстановлением незарегистрированного пакета.

Можно ли как-то ограничить конечного пользователя в загрузке ссылки Project_A?

Честно говоря, мой ответ: зачем вам это?Какой вред, если разработчик скачивает Package_A?Какую проблему вы пытаетесь решить, и есть ли другой способ решить ту же проблему?Представьте, что вы разработчик, который использует пакет, но его зависимость, по-видимому, отсутствует, как бы вы себя чувствовали?

Чтобы напрямую ответить на ваш вопрос, вы можете просто опубликовать пакет Project_A в частном фиде Nuget.,Но в этом случае, если Package_B находится в общедоступном фиде, его смогут использовать только люди, имеющие доступ к частному фиду, для всех остальных NuGet не сможет восстановить свою зависимость.

edit: Также рассмотриморганизации, которые имеют процедуры соблюдения безопасности.Если разработчик использует ваш общедоступный пакет, а затем он проверяет свои зависимости и видит, что ваш пакет имеет странную скрытую зависимость, это будет выглядеть очень подозрительно.

...