Подтвердить что ты не робот

Восстановление пакета NuGet -.nuget папка в решении - Commit to repository?

При включении восстановления пакета NuGet в мое решение добавляется следующее:

/. NuGet
/.nuget/NuGet.exe
/.nuget/NuGet.targets

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

Учитывая, что часть настройки восстановления пакета - это то, что мне не нужно записывать бинарные файлы в репозиторий, каково намерение форсировать NuGet.exe в решение?

Является ли предположение, что фиксация одного небольшого .exe в репозитории - небольшая цена для оплаты, чтобы удалить необходимость совершать другие бинарные файлы? Или я должен исключить их из репозитория и сообщить разработчику, что он впервые проверит мой репозиторий и включит восстановление пакета? Как насчет того, когда непрерывная интеграция встречает недостающую ссылку в моем решении?

4b9b3361

Ответ 1

Точка, в которой происходит перенос папки .nuget в репозиторий, заключается в том, что вы можете настроить решение для восстановления пакета, используя ту же самую версию nuget.exe, которую вы установили при включении этой функции.

Файлы ваших проектов зависят от инструкций nuget.targets MSBuild, которые используют nuget.exe, и оба файла считаются связанными друг с другом, потому что в инструкциях MSBuild используется API nuget.exe. Вполне возможно, что в один прекрасный день вы получите другую версию nuget.exe и nuget.targets. Он использует пакеты NuGet.Build и NuGet.Commandline под капотом. Это также причина, почему восстановление пакета обычно настраивается один раз для решения, а не каждым разработчиком по отдельности.

Кроме того, вам не нужно будет устанавливать nuget.exe на каждый сервер сборки, и ваш сервер сборки может создавать решения с различными версиями nuget.exe, что является дополнительным преимуществом, которое не требует дополнительных усилий. И да, можно было бы подумать и о небольшой цене, чтобы заплатить: -)

Если ваш CI встречает отсутствующую ссылку, проверьте следующее:

  • ваш сервер сборки не может достичь источника пакета NuGet.
  • ваш сервер сборки не может найти пакет NuGet в источнике пакета NuGet (проверьте, есть ли он там или вы указываете на правильный источник пакета)

Ответ 2

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

Ответ 3

Если вы следуете за ответом @Richard Szalay (не комментируя nuget.exe), и по некоторым причинам Visual Studio автоматически не загружает файл nuget.exe, убедитесь, что у вас есть следующий параметр: true в файле nuget.targets:

<!-- Download NuGet.exe if it does not already exist --> 
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">true</DownloadNuGetExe>

Закройте решение VS, откройте его и постройте. Теперь Visual Studio должна скачать nuget.exe автоматически.

Ответ 4

Для .gitignore добавьте ниже строки.

.nuget/
!.nuget/packages.config