Почему NuGet ставит пакеты на «уровне решения»? - PullRequest
8 голосов
/ 19 июля 2011

Когда вы добавляете пакет nuget в проект, он помещает сборки в папку / packages на уровне решения.

Я знаю, что есть способы изменить это, но мне интересно, почему это местоположение по умолчанию, поскольку оно кажется очень бесполезным по следующим причинам:

1) Если у вас есть проект, который является частью нескольких решений, папка / packages не обязательно будет там, где вас ожидает проект.

2) Ожидается, что вы вручную включите его в систему контроля версий для других членов команды, что гораздо менее удобно, чем если бы это была часть проекта, которая нуждается в этом.

3) Если вы переместите проект в другое место в файловой системе или на другой компьютер, который не имеет полной базы кода, он не найдет папку / packages, где он ожидает.

Кажется, что все это было бы решено, если бы NuGet просто использовал папку / packages внутри проекта, а не решение. И это кажется гораздо более логичным местом для размещения пакетов, на которые в любом случае опирается проект.

Итак ... я предполагаю, что были / есть веские причины сделать это на уровне решения, и я надеюсь, что кто-то сможет просветить меня.

Ответы [ 2 ]

4 голосов
/ 19 июля 2011

Вы должны прочитать это, объясняющее, как использовать nuget без передачи пакетов в систему контроля версий, и побочным эффектом решить пункты 1 и 3 вашего вопроса: http://blog.davidebbo.com/2011/03/using-nuget-without-committing-packages.html

2 голосов
/ 19 июля 2011

Я думаю, это для экономии места на диске.Если у вас было большое решение с 50 проектами, и вы использовали пакет в каждом из них, у вас получилось бы 50 копий этого пакета, двоичных файлов и всего.В то время как хранение их на уровне решения гораздо эффективнее в этом отношении.

С точки зрения контроля над исходным кодом, вы не должны помещать туда свою действительную папку пакетов.Просто добавьте файл packages.config и сделайте то, что предлагает Дэвид Эббо в сообщении в блоге, упомянутом mathieu , или создайте простой пакетный файл, чтобы загрузить все ваши пакеты на основе найденных файлов пакетов.config.

Создание собственной ленты рассылки для компании не составляет особых усилий, поэтому вы можете хранить там свои личные пакеты.

...