Сервер сборки TFS2012 не восстанавливает пакеты NuGet из собственного репозитория
Я создал собственный репозиторий NuGet (общую папку на одном из наших серверов) и добавил его в список "Доступные источники" в настройках Visual Studio NuGet на моем ПК. Я могу успешно установить пакет в свое решение из этого репозитория.
Однако на сервере TFS сборка не работает, потому что она не может восстановить этот конкретный пакет (сообщение: "Невозможно найти версию" xxx "пакета" xxx "). Решение настроено для" включения восстановления пакета NuGet", которое отлично работает для пакетов, установленных через nuget.org
. Он просто не восстанавливает пакет из нашего внутреннего хранилища.
Разрешения в папке/папке репозитория в порядке. Что мне не хватает?
Я предполагаю, что мне нужно также настроить "доступные источники" Visual Studio на сервере TFS, но, возможно, эти параметры зависят от пользователя? Служба сборки работает как NETWORK SERVICE, так как я могу настроить NuGet для этого пользователя?
Ответы
Ответ 1
измените свою сборку на выполнение как определенную учетную запись. вы можете войти в систему с этой учетной записью и доказать все эти маленькие коряги.
в зависимости от того, каким образом вы выполняете восстановление NuGet, обновили ли вы файл целей локатор вашего локального фида?
<ItemGroup Condition=" '$(PackageSources)' == '' ">
<!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
<!-- The official NuGet package source (https://www.nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
<!--
<PackageSource Include="https://www.nuget.org/api/v2/" />
<PackageSource Include="https://my-nuget-source/nuget/" />
-->
<PackageSource Include="http://MyLocalFeed/nuget/nuget"/>
</ItemGroup>
Ответ 2
Вы можете добавить источник в общую конфигурацию на сервере TFS, и он будет включен в список источников при восстановлении пакета.
Я создал файл %ProgramData%\NuGet\Config\sources.config
, содержащий:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="internal source" value="http://internal_server/nuget/" />
</packageSources>
</configuration>
Имя файла не имеет значения, это местоположение файла. Nuget подбирает любые файлы .config в этой папке.
http://docs.nuget.org/docs/reference/NuGet-Config-File#NuGet_config_extensibility_point
ОБНОВЛЕНИЕ 2016-11-18
Согласно http://blog.nuget.org/20161121/introducing-nuget4.0.html (при нарушении изменений) VS 2017+ и NuGet 4.0+ изменяет расположение установочной папки для всей машины на %ProgramFiles(x86)%\NuGet\Config\
.