NuGet 3.2 добавлена поддержка .nuget\nuget.config
для определения общих глобальных пакетов с использованием переменной окружения, NUGET_PACKAGES
. Вы можете установить полный путь к альтернативной глобальной папке пакетов, однако я обнаружил, что если вы просто установите переменную в «пакеты», то инструменты NuGet в Visual Studio будут относиться к ней как относительный путь в папке с вашим решением. Это позволило мне установить и восстановить пакеты NuGet с помощью папки packages
решения.
К сожалению, строительные проекты тогда дали мне ошибки в Microsoft.NuGet.targets
, не в состоянии найти пакеты NuGet. Свойство NugetPackagesDirectory
в msbuild не похоже, что оно установлено. Чтобы обойти эту проблему, я добавил следующие строки в к C:\Program Files (x86)\MSBuild\Microsoft\NuGet\Microsoft.NuGet.props
файла:
<PropertyGroup Condition="'$(NugetPackagesDirectory)' == ''">
<NugetPackagesDirectory>$(SolutionDir)packages</NugetPackagesDirectory>
</PropertyGroup>
Это будет влиять на все решения на машине, так что альтернативой было бы добавить те же строки в каждом файле проекта или в файл пользовательского props
в решении, которое вы импортируете в каждый проект. Это также может потребоваться и для серверов сборки.
Хотя это работает, недостатком является то, что папка пакетов имеет другую структуру, packages\<package_name>\<version>\
по сравнению с packages\<package_name>.<version>\
, а старые или неиспользуемые версии пакетов не удаляются после их обновления или удаления. Ручная очистка каталога пакетов, а затем восстановление необходимых пакетов после любых изменений приведет к тому же.
Лично это чувствует себя действительно взломанным, так как требует установки глобальных настроек для чего-то, что должно быть установлено на основе каждого решения. В какой-то момент NuGet будет обновляться для поддержки каталогов пакетов решений с project.json
, но пока вы можете использовать описанную выше работу или просто придерживаться packages.config
.
Другая альтернатива - передать '/ p: NuGetPackagesDirectory = c: \ my \ new \ dir \' в командной строке при вызове msbuild (при условии, что вы вызвали 'nuget restore -PackagesDirectory c: \ my \ new \ dir \ ' –
« NuGet в какой-то момент будет обновляться, чтобы поддерживать каталоги пакетов решений с помощью 'project.json' ...» У вас случилась проблема GitHub или другой URL-адрес, который вы можете привести для этого? вокруг проблем GitHub от NuGet и ничего не мог найти об этом. – joshuapoehls