Я думаю, что вы используете Формат управления Nuget PackageReference для управления пакетами nuget в своих проектах.
Формат nuget PackageReference напрямую ссылается на nuget из локального nuget кэша и не будет копировать пакеты nuget в ваш проект. Похоже, Ссылка ссылка . Это функция PackageReference .
Когда вы перемещаете свой проект в другой агент и затем хотите использовать его содержимое, вы должны убедиться, что пакет nuget все еще находится в вашей текущей среде агента. .
Итак, прежде всего , вы должны выполнить восстановление nuget . И тогда вы можете вернуть отсутствующие пакеты на ваш агент.
Щелкните правой кнопкой мыши ваше решение в Solution Explorer -> Restore Nuget Packages
Есть ли способ сказать Visual Studio, чтобы он автоматически копировал все необходимые файлы из всех используемых пакетов NuGet в выходной каталог?
На самом деле , ранее была проблема со ссылкой на пакет время от времени содержимое пакета nuget терялось и не могло быть полностью скопировано в выходной путь. См. this .
Так что вы можете попробовать добавить это в ваш xxx.csproj
файл:
<PropertyGroup>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
Можно ли сохранить загруженные пакеты NuGet? где-нибудь ближе к моему исходному коду, а не в моем windows каталоге пользователя? Я хотел бы просто заархивировать один каталог для резервного копирования всего моего исходного кода.
Windows каталог пользователя равен nuget global caches , и он загрузит все пакеты в таком виде Папка в вашем агенте, а затем проекты ссылается на пакет Nuget оттуда.
И также обратите внимание, что :
Работает в соответствии с текущим пользователем , а не текущим устройством. Это разработано этим. Все пакеты nuget хранятся в текущем каталоге уровня пользователя. Переключение учетных записей ОС не может получить пакеты nuget в другом каталоге пользователя.
И если вы хотите изменить его путь, вам следует изменить файл Nuget.Config
(C:\Users\xxx(use r name)\AppData\Roaming\NuGet\NuGet.Config
):
add эти узлы:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
....
<config>
<add key="globalPackagesFolder" value="xxxxx(the custom path)" />
</config>
....
</configuration>
А затем перезапустите VS и пакеты nuget, которые вы установите позже, будут установлены в такой пакет.
Обновление 1
Во-первых, пожалуйста, проверьте ваш агент и убедитесь, что Inte rnet может получить быстрый доступ.
Для этих платных пакетов nuget вы должны выполнить другую операцию, а затем установить ее с сервера nuget.
Если пакет nuget необходимо оплатить или удалить с сервера nuget, операция восстановления не найдет пакет или не потребует вашего дополнительного дополнительного шага. И тогда операция восстановления завершится успешно.
Для этих старых заброшенных пакетов Nuget он существует в глобальном кеше Nuget вашего старого агента , так что в вашем старом агенте вы можете найти его.
Но при переносе проекта на нового агента, поскольку пакет nuget удаляется с сервера nuget, поэтому новый агент не находит его и не может восстановить такой пакет. Если у вас все еще есть старый пакет nuget в вашем старом агенте, вы можете перейти в новую среду, а затем настроить новый адрес на источник пакета nuget , после чего операция восстановления будет выполнена успешно.
В конце концов, вы должны убедиться, что каждый пакет nuget может быть найден и у него нет дополнительных требований к серверу nuget.org
, или выполнять с ним какие-либо операции, поскольку ваш проект слишком стар и пакеты nuget претерпели большие изменения. Вы должны внимательно их проверить.