проверять пакеты из nuget в систему контроля версий?

<p>до nuget общепринятая "лучшая практика" заключалась в регистрации всех внешних библиотек dll, используемых в проекте. обычно в каталоге <code>libs</code> или <code>3rdparty</code>.</p><p>при работе с nuget я должен зарегистрироваться в каталоге <code>packages</code>, или есть ли способ для msbuild автоматически загружать необходимые пакеты из ленты новостей?</p>

<h1>нет</h1><p>поскольку этот вопрос был задан, теперь существует простой рабочий процесс для использования nuget без передачи пакетов в систему контроля версий.</p><p>в консоли диспетчера пакетов вам необходимо установить <strong> nugetpowertools </strong>:</p><pre><code>install-package nugetpowertools </code></pre><p>затем, чтобы ваши проекты могли поддерживать восстановление пакетов, вам нужно выполнить другую команду:</p><pre><code>enable-packagerestore </code></pre><p>теперь вы готовы зафиксировать свою кодовую базу без папки пакетов. предыдущая команда изменила файлы вашего проекта, так что если пакеты отсутствуют, они автоматически загружаются и добавляются.</p><h3>источник</h3><p> <a href="http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages#using\_nuget\_without\_committing\_packages\_to\_source\_control">использование nuget без передачи пакетов в систему контроля версий</a> </p>

<p>да. считайте, что каталог "packages" эквивалентен каталогу "libs", который вы упомянули в своем вопросе. это подход, который я лично использую в своих проектах oss.</p><p>мы исследуем функции, которые позволят msbuild автоматически загружать необходимые пакеты, но это не было реализовано (начиная с nuget 1.1).</p><p>я думаю, что некоторые люди, возможно, уже внедрили такие функции самостоятельно, но мы надеемся, что эта функция будет встроена в nuget 1.2 или 1.3.</p>

<p>несмотря на все ответы здесь, это по-прежнему ужасное решение, когда не все ваши зависимости находятся под "своего рода" контролем версий.</p><p>для git это будет означать git-lfs.</p><p>недавний эпизод с npm показывает, почему: если интернет-хранилище, от которого вы зависите, прерывается, недоступно и т.д., то что ж, вы облажались?</p><p>вы больше не можете создавать свои вещи - и, следовательно, не можете доставить.</p>

<p>я понимаю, что реальность была иной, когда этот вопрос был первоначально опубликован и на него был дан ответ, но, к счастью, ответ немного изменился. теперь можно использовать nuget для загрузки зависимостей через msbuild с помощью события pre-build. вам не нужно помещать папку пакетов в ваш репозиторий кода, все зависимости будут загружены и/или обновлены при сборке. это может быть обходной путь, но выглядит достаточно прилично. подробности см. в следующем сообщении в блоге: <a href="http://blog.davidebbo.com/2011/03/using-nuget-without-committing-packages.html">http://blog.davidebbo.com/2011/03/using-nuget-without-committing-packages.html</a> </p>

<p>этот пост сильно устарел. ответ все еще нет, но решение изменилось. начиная с nuget 2.7+, вы можете включить автоматическое восстановление пакетов, не добавляя файл nuget.exe в ваш источник (это нежелательно, если не сказать больше), и если вы используете какой-либо современный dvcs, вы можете игнорировать папку пакетов. если вам нужны какие-либо специальные настройки, вы можете создать файл nuget.config в корне решения.</p><p> <a href="http://docs.nuget.org/docs/reference/package-restore">http://docs.nuget.org/docs/reference/package-restore</a> </p><p>кроме того, с новым форматом csproj вы можете избежать лишних файлов nuget.config, так как они теперь интегрированы. пожалуйста, проверьте этот пост, который объясняет это лучше:</p><p> <a href="https://stackoverflow.com/questions/9146094/should-nuget-folder-be-added-to-version-control/27410376#27410376">нужно ли добавлять папку .nuget в систему управления версиями?</a> </p>

<p>начиная с 20.09.13, существует нечто, называемое "nuget restore". вам на самом деле не нужно проверять в папке пакета, если вы хотите это сделать. (особенно если вы используете dvcs)</p><p>проверьте это: использование nuget без передачи пакетов в систему контроля версий <a href="http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages">http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages</a> </p>