Nuget dll пропал после выписки из Git

У меня есть решение C#, содержащее разные проекты. В этих проектах у меня есть несколько обычных пакетов nuget, таких как Newtonsoft.Json, EntityFramework и т. Д. Но когда я извлекаю свой источник на другом компьютере и собираю его, он не будет копировать Dlls

Я поместил всю папку с решениями в git, и я могу видеть папку пакета и его содержимое в Bitbucket. Что я сделал не так?

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

nuget install packages.config

1 ответ

Решение

Идиоматический способ использования NuGet (в отличие, например, от npm, где обычно происходит коммит node_packages) это совершать только ваши packages.config, Visual Studio обнаружит отсутствующие пакеты в packages/ папку и восстановить их при сборке, и nuget restore в командной строке сделаем то же самое.

Причиной этого является то, что двоичные файлы больше, чем текстовые файлы, и их невозможно изменить (т. Е. Сохранить дельту невозможно). Я не уверен, что git даже работает так, как svn, но авторы nuget пишут не только для тех, кто использует git.

Если вы беспокоитесь о пропаже пакетов, у меня есть два момента:

  1. Nuget.org достаточно осторожен, так как это невозможно. Они настроили так, что пакеты могут быть удалены только программно, что означает, что восстановление может видеть эти версии, в то время как nuget install не буду.
  2. Многие люди используют собственный внутренний сервер пакетов (например, Klondike), который действует как прокси для nuget.org. Это также полезно, если вы хотите упаковать внутренние библиотеки и распространять их в своих проектах с помощью nuget, не публикуя их в интернете.
Другие вопросы по тегам